Ο επίσημος Κατάλογος χαρακτηριστικών Doconut αναφέρει την εκτύπωση από τον περιηγητή και την εξαγωγή PDF ως δυνατότητες του προβολέα. Ο έλεγχος πρόσβασης σε αυτές τις λειτουργίες απαιτεί ακόμη δύο ξεχωριστές αποφάσεις: αν το Doconut εμφανίζει τη σχετική ενέργεια και αν η εφαρμογή-φιλοξενητής εξουσιοδοτεί αυτή τη λειτουργία για τον τρέχοντα χρήστη και έγγραφο.

Για τον ακριβή έλεγχο που υποστηρίζεται από την εγκατεστημένη έκδοση, ξεκινήστε με την τεκμηρίωση Doconut και τα πακέτα δειγμάτων που διατίθενται στην επίσημη σελίδα λήψης Doconut. Μην αντιγράφετε κλειδιά ρυθμίσεων ή κώδικα πηγής από μια άσχετη έκδοση ή από ένα μη επαληθευμένο άρθρο.
1. Ορίστε Πρώτα την Πολιτική Εκτύπωσης
Καταγράψτε ποιος μπορεί να εκτυπώσει και υπό ποιες προϋποθέσεις πριν τροποποιήσετε τη γραμμή εργαλείων. Μια χρήσιμη πολιτική απαντά σε ερωτήσεις όπως:
- Επιτρέπεται η εκτύπωση για κάθε προβολέα, μόνο για ορισμένους ρόλους ή για συγκεκριμένα έγγραφα;
- Εξαρτάται η απόφαση από τον ενοικιαστή, την κατάσταση της υπόθεσης, την ταξινόμηση του εγγράφου ή τη λήξη;
- Απαιτείται υδατογράφημα στην εκτυπώσιμη έξοδο;
- Πρέπει να καταγραφούν τα γεγονότα εκτύπωσης;
- Μπορεί ένας χρήστης να εκτυπώσει μια παλαιότερη αναθεώρηση του εγγράφου;
- Τι πρέπει να συμβεί όταν αλλάξουν τα δικαιώματα ενώ η προεπισκόπηση είναι ανοιχτή;
Αποφύγετε τη χρήση ενός ενιαίου παγκόσμιου Boolean όταν ο πραγματικός κανόνας είναι συμφραζόμενος. Μοντελοποιήστε την εκτύπωση ως ξεχωριστή λειτουργία ώστε να μπορεί να εξουσιοδοτηθεί ανεξάρτητα από την προβολή και τη λήψη.
2. Διαχωρίστε την Κατάσταση UI από την Εξουσιοδότηση
Η σελίδα-φιλοξενητής μπορεί να αποφασίσει αν θα εμφανίσει τον έλεγχο εκτύπωσης αφού λάβει το αποτέλεσμα δικαιώματος που ανήκει στην εφαρμογή. Αυτό βελτιώνει τη σαφήνεια για χρήστες που δεν μπορούν να εκτυπώσουν.
Ωστόσο, η απόκρυψη ενός ελέγχου δεν αποτελεί όριο εξουσιοδότησης. Ένας χρήστης μπορεί ακόμη να καλέσει απευθείας ένα γνωστό endpoint, να επαναλάβει ένα προηγούμενο αίτημα ή να ενεργοποιήσει την εκτύπωση του περιηγητή στο ορατό περιεχόμενο. Κάθε διαδρομή του διακομιστή που παράγει εκτυπώσιμη έξοδο πρέπει να επιβάλλει την ίδια πολιτική.
Χρησιμοποιήστε διακριτές καταστάσεις στο UI:
| Κατάσταση | Συμπεριφορά προβολέα | Συμπεριφορά διακομιστή |
|---|---|---|
| Επιτρέπεται η εκτύπωση | Εμφάνιση της υποστηριζόμενης ενέργειας εκτύπωσης | Εξουσιοδότηση και δημιουργία της ζητούμενης εξόδου |
| Απαγορεύεται η εκτύπωση | Απόκρυψη ή απενεργοποίηση της ενέργειας με σαφή εξήγηση | Επιστροφή απάντησης απαγόρευσης |
| Άγνωστη πολιτική | Διατήρηση της ενέργειας μη διαθέσιμης ενώ φορτώνεται η άδεια | Να μην δημιουργηθεί έξοδος |
| Η συνεδρία έληξε | Ζητήστε από το χρήστη να επανασυνδεθεί | Απόρριψη του παλαιού αιτήματος |
3. Προστατέψτε το Endpoint Εκτύπωσης
Προστατέψτε τη λειτουργία της εφαρμογής που καλεί την εκτύπωση ή επιστρέφει εκτυπώσιμη έξοδο. Η απόφαση εξουσιοδότησης πρέπει να λαμβάνει υπόψη τη συμμετοχή του ενοικιαστή, την ιδιοκτησία, την ταξινόμηση, την κατάσταση της ροής εργασίας και την αναθεώρηση του εγγράφου. Επίλυση του εγγράφου στον διακομιστή αντί να γίνεται αποδοχή διαδρομής ή URL αποθήκευσης που παρέχεται από τον πελάτη.
Αν η εφαρμογή σας εκτυπώνει μέσω μιας διαδρομής ειδικής για τον προβολέα αντί να δημιουργεί PDF, εφαρμόστε την ίδια εξουσιοδότηση πριν καλέσετε αυτή τη διαδρομή.
4. Διαμορφώστε την Εγκατεστημένη Έκδοση Προβολέα
Μόλις υπάρχει ο κανόνας στον διακομιστή, διαμορφώστε το UI του Doconut χρησιμοποιώντας την ακριβή επιλογή που τεκμηριώνεται για το πακέτο και τα δείγματα αρχείων που συνοδεύουν την έκδοσή σας. Τα ζωντανά demos του Doconut σας επιτρέπουν να παρατηρήσετε τη συμπεριφορά του προβολέα πριν δεσμευτείτε σε μια συγκεκριμένη ενσωμάτωση. Επαληθεύστε:
- Πού ορίζεται η επιλογή: ρύθμιση διακομιστή, μοντέλο προβολής ή αρχικοποίηση πελάτη.
- Αν κρύβει στοιχείο γραμμής εργαλείων, απενεργοποιεί ενέργεια ή επηρεάζει την παραγόμενη έξοδο.
- Αν η τιμή εφαρμόζεται ανά εμφάνιση προβολέα ή παγκοσμίως.
- Αν η εκτύπωση και η εξαγωγή είναι ξεχωριστές λειτουργίες.
- Αν μια ενημέρωση άλλαξε το όνομα ή την προεπιλογή της επιλογής.
Θεωρήστε το επίσημο δείγμα ως την πηγή αλήθειας. Ένα όνομα ιδιότητας που φαίνεται λογικό δεν αποτελεί επαρκή απόδειξη ότι ο εγκατεστημένος προβολέας το αναγνωρίζει.
5. Διαχειριστείτε την Εκτύπωση του Περιηγητή Ειλικρινά
Μια ρύθμιση προβολής δεν μπορεί να εγγυηθεί ότι οι ορατές πληροφορίες δεν θα εκτυπωθούν ή θα καταγραφούν ποτέ. Ο περιηγητής μπορεί να εκτυπώσει τη σελίδα φιλοξενίας, και οι χρήστες μπορούν να κάνουν στιγμιότυπα οθόνης ή φωτογραφίες. Η παρέμβαση του πληκτρολογίου και το CSS ειδικά για εκτύπωση μπορούν να βελτιώσουν την αναμενόμενη εμπειρία, αλλά είναι παρακάμπτοντα μέτρα στην πλευρά του πελάτη.
Αν η σελίδα φιλοξενίας δεν πρέπει να παράγει ένα χρήσιμο έντυπο αντίγραφο, η εφαρμογή σας μπορεί να χρησιμοποιήσει τη δική της παρουσίαση ειδική για εκτύπωση ώστε να αντικαταστήσει την προεπισκόπηση με ένα εξηγητικό μήνυμα. Κρατήστε αυτή τη συμπεριφορά της σελίδας φιλοξενίας ξεχωριστά από τα τεκμηριωμένα στοιχεία ελέγχου προβολής του Doconut.
Μην περιγράφετε αυτό ως προστασία εγγράφου. Χρησιμοποιήστε απόδοση στην πλευρά του διακομιστή, εξουσιοδότηση, ελεγχόμενες εξαγωγές και ορατά υδατογραφήματα όταν η αξιολόγηση κινδύνου σας απαιτεί πιο ισχυρή αποτροπή.
6. Διατηρήστε το Κατέβασμα, την Εξαγωγή και την Εκτύπωση Ξεχωριστά
Οι χρήστες και οι προγραμματιστές συχνά τα αντιμετωπίζουν ως ένα ενιαίο «μόνο για ανάγνωση» διακόπτη, αλλά αντιπροσωπεύουν διαφορετικές ροές δεδομένων:
- Προβολή εμφανίζει το αποδομένο περιεχόμενο.
- Κατέβασμα επιστρέφει την πηγή ή ένα άλλο αποθηκευμένο αρχείο.
- Εξαγωγή δημιουργεί μια παράγωγη μορφή.
- Εκτύπωση παράγει μια εκτυπώσιμη αναπαράσταση ή ενεργοποιεί την εκτύπωση του περιηγητή.
Εξουσιοδοτήστε κάθε λειτουργία ρητά. Ένας χρήστης που δεν μπορεί να εκτυπώσει μπορεί ακόμη να επιτραπεί να κατεβάσει, ή το αντίστροφο. Η γραμμή εργαλείων σας πρέπει να αντικατοπτρίζει τις αποφάσεις του διακομιστή αντί να τις ορίζει.
7. Προσθέστε Χρήσιμα Γεγονότα Ελέγχου
Αν η εκτύπωση είναι ευαίσθητη, καταγράψτε την απόφαση χωρίς να καταγράψετε το ίδιο το έγγραφο. Ένα γεγονός μπορεί να περιλαμβάνει τον χρήστη, τον ενοικιαστή, το αναγνωριστικό εγγράφου, την αναθεώρηση, το αποτέλεσμα της πολιτικής, την χρονική σήμανση και το ID συσχέτισης.
Καταγράψτε τόσο τις επιτυχείς όσο και τις απορριπτέες προσπάθειες. Εάν η υπηρεσία εκτύπωσης δημιουργεί ένα προσωρινό αρχείο, καταγράψτε επίσης αν η εκκαθάρισή του ολοκληρώθηκε. Κρατήστε τις διαδρομές αρχείων, τα διακριτικά, τους τίτλους εγγράφων που περιέχουν προσωπικά δεδομένα και το εκτυπώσιμο περιεχόμενο εκτός των τυπικών καταγραφών.
8. Δοκιμάστε Πέρα από το Ελλιπές Κουμπί
Η γραμμή εργαλείων είναι μόνο η πρώτη υπόθεση. Προσθέστε δοκιμές για ολόκληρη τη λειτουργία:
Εξουσιοδοτημένος χρήστης
- Η προγραμματισμένη ενέργεια εκτύπωσης είναι ορατή.
- Η αίτηση εκτύπωσης επιτυγχάνει για ένα επιτρεπόμενο έγγραφο.
- Χρησιμοποιείται η σωστή αναθεώρηση.
- Τα απαιτούμενα σήματα εμφανίζονται στην παραγόμενη έξοδο.
- Το γεγονός ελέγχου καταγράφει την επιτυχία.
Μη εξουσιοδοτημένος χρήστης
- Η ενέργεια λείπει ή είναι απενεργοποιημένη.
- Μια άμεση αίτηση στη διαδρομή εκτύπωσης επιστρέφει απάντηση απαγόρευσης.
- Η αλλαγή του αναγνωριστικού εγγράφου δεν παρακάμπτει τον κανόνα.
- Ένα URL που αντιγράφηκε από εξουσιοδοτημένη συνεδρία δεν μπορεί να χρησιμοποιηθεί ακατάλληλα.
- Η άρνηση δεν αποκαλύπτει αν ένας άλλος ενοικιαστής κατέχει το έγγραφο.
Αλλαγές κατάστασης
- Η άδεια που ανακαλείται κατά τη διάρκεια μιας συνεδρίας επιβάλλεται στην επόμενη αίτηση εκτύπωσης.
- Μια ληγμένη συνεδρία δεν μπορεί να εκτυπώσει.
- Ένα διαγραμμένο ή αντικατεστημένο έγγραφο παράγει ελεγχόμενο σφάλμα.
- Η προσωρινή έξοδος εκτύπωσης ακολουθεί τον ρυθμισμένο κανόνα διατήρησης.
Η αυτοματοποίηση του περιηγητή μπορεί να επαληθεύσει την ορατή κατάσταση και τον κωδικό απόκρισης. Οι δοκιμές ενσωμάτωσης πρέπει να επαληθεύουν την αξιολόγηση πολιτικής και την εξουσιοδότηση σε επίπεδο εγγράφου ανεξάρτητα.
Συχνές Ερωτήσεις
Αποκρύπτοντας το κουμπί εκτύπωσης εμποδίζεται η συντόμευση εκτύπωσης του περιηγητή;
Όχι. Αφαιρεί μια προγραμματισμένη ενέργεια προβολής μόνο εάν η εγκατεστημένη προβολή υλοποιεί αυτή τη συμπεριφορά. Η εκτύπωση του περιηγητή και η λήψη εικόνας απαιτούν ξεχωριστή αντιμετώπιση και δεν μπορούν να αποτραπούν πλήρως από κώδικα στην πλευρά του πελάτη.
Πρέπει η άδεια εκτύπωσης να συμπεριλαμβάνεται στο URL προβολής;
Προτιμήστε μια απόφαση εξουσιοδότησης στην πλευρά του διακομιστή που συνδέεται με τον πιστοποιημένο χρήστη, το έγγραφο και τη λειτουργία. Εάν μια προσωρινή αναφορά μεταφέρει άδειες, περιορίστε την στενά, προστατέψτε την από καταγραφές και παραπομπές, και επαληθεύστε ξανά τις ευαίσθητες ενέργειες.
Αν είναι η απενεργοποίηση της εκτύπωσης αρκετή για εμπιστευτικά έγγραφα;
Όχι. Είναι ένας έλεγχος χρηστικότητας ή αποτροπής. Οι εμπιστευτικές ροές εργασίας χρειάζονται επίσης προστασία αποθήκευσης, εξουσιοδότηση σε επίπεδο αντικειμένου, ελεγχόμενες εξαγωγές, κανόνες διατήρησης, παρακολούθηση και ένα αποδεκτό μοντέλο υπολειπόμενου κινδύνου.
Συμπέρασμα
Μια αξιόπιστη υλοποίηση ελέγχου εκτύπωσης του Doconut ξεκινά από τον διακομιστή και τελειώνει στη διεπαφή. Ορίστε την πολιτική, προστατέψτε τη λειτουργία, διαμορφώστε μόνο την τεκμηριωμένη επιλογή για την εγκατεστημένη προβολή σας, εξηγήστε το αποτέλεσμα στους χρήστες και δοκιμάστε τις άμεσες αιτήσεις καθώς και την ορατότητα της γραμμής εργαλείων. Χρησιμοποιήστε τη επίσημη σελίδα χαρακτηριστικών, την τεκμηρίωση, τις λήψεις και τις επιδείξεις ως πηγές υλοποίησης αντί να δημιουργείτε ξανά τον κώδικα προϊόντος στο άρθρο.