Oficjalny katalog funkcji Doconut wymienia drukowanie w przeglądarce i eksport PDF jako możliwości przeglądarki. Kontrola dostępu do nich nadal wymaga dwóch odrębnych decyzji: czy Doconut wyświetla odpowiednią akcję oraz czy aplikacja‑host autoryzuje tę operację dla bieżącego użytkownika i dokumentu.

Aby poznać dokładne kontrolki obsługiwane przez zainstalowaną wersję, rozpocznij od dokumentacji Doconut oraz przykładowych plików dostarczonych na oficjalnej stronie pobierania Doconut. Nie kopiuj kluczy konfiguracyjnych ani kodu źródłowego z niepowiązanej wersji lub niezweryfikowanego artykułu.
1. Najpierw zdefiniuj politykę drukowania
Spisz, kto może drukować i na jakich warunkach, zanim zmienisz pasek narzędzi. Przydatna polityka odpowiada na pytania takie jak:
- Czy drukowanie jest dozwolone dla każdego przeglądarki, tylko dla określonych ról, czy konkretnych dokumentów?
- Czy decyzja zależy od najemcy, statusu sprawy, klasyfikacji dokumentu lub daty wygaśnięcia?
- Czy na wydruku wymagana jest znak wodny?
- Czy zdarzenia drukowania mają być audytowane?
- Czy użytkownik może wydrukować starszą wersję dokumentu?
- Co zrobić, gdy uprawnienia zmienią się, gdy podgląd jest otwarty?
Unikaj jednego globalnego typu Boolean, gdy rzeczywista reguła jest kontekstowa. Modeluj drukowanie jako odrębną operację, aby mogła być autoryzowana niezależnie od przeglądania i pobierania.
2. Oddziel stan UI od autoryzacji
Strona hosta może zdecydować, czy wyświetlić kontrolkę drukowania po otrzymaniu wyniku uprawnienia zarządzanego przez aplikację. Poprawia to przejrzystość dla użytkowników, którzy nie mogą drukować.
Jednak ukrycie kontrolki nie jest granicą autoryzacji. Użytkownik nadal może wywołać znany endpoint bezpośrednio, odtworzyć wcześniejsze żądanie lub uruchomić drukowanie przeglądarki na widocznym materiale. Każda trasa serwera generująca wydrukowalny wynik musi wymuszać tę samą politykę.
Użyj odrębnych stanów w UI:
| Stan | Zachowanie przeglądarki | Zachowanie serwera |
|---|---|---|
| Drukowanie dozwolone | Pokaż obsługiwaną akcję drukowania | Autoryzuj i utwórz żądany wynik |
| Drukowanie odrzucone | Ukryj lub wyłącz akcję z jasnym wyjaśnieniem | Zwróć odpowiedź „forbidden” |
| Polityka nieznana | Trzymaj akcję niedostępną, dopóki nie załaduje się uprawnienie | Nie twórz wyniku |
| Sesja wygasła | Poproś użytkownika o ponowne uwierzytelnienie | Odrzuć przestarzałe żądanie |
3. Chroń endpoint drukowania
Zabezpiecz operację aplikacji, która wywołuje drukowanie lub zwraca wydrukowalny wynik. Decyzja autoryzacyjna powinna uwzględniać przynależność do najemcy, własność, klasyfikację, stan workflow oraz wersję dokumentu. Rozwiązuj dokument po stronie serwera zamiast akceptować ścieżkę lub URL przechowywany przez klienta.
Jeśli aplikacja drukuje poprzez trasę specyficzną dla przeglądarki zamiast tworzyć PDF, zastosuj tę samą autoryzację przed wywołaniem tej trasy.
4. Skonfiguruj zainstalowaną wersję przeglądarki
Gdy reguła serwera istnieje, skonfiguruj interfejs Doconut używając dokładnej opcji udokumentowanej dla pakietu i plików przykładowych dostarczonych z Twoją wersją. Demo na żywo Doconut pozwalają zobaczyć zachowanie przeglądarki przed podjęciem decyzji o integracji. Zweryfikuj:
- Gdzie opcja jest ustawiona: konfiguracja serwera, model widoku czy inicjalizacja po stronie klienta.
- Czy ukrywa element paska narzędzi, wyłącza akcję, czy wpływa na generowany wynik.
- Czy wartość obowiązuje na poziomie pojedynczej instancji przeglądarki, czy globalnie.
- Czy drukowanie i eksport są odrębnymi operacjami.
- Czy aktualizacja zmieniła nazwę opcji lub jej domyślne ustawienie.
Traktuj oficjalny przykład jako źródło prawdy. Nazwa właściwości wyglądająca wiarygodnie nie jest wystarczającym dowodem, że zainstalowana przeglądarka ją rozpoznaje.
5. Obsługuj drukowanie w przeglądarce uczciwie
Ustawienie przeglądarki nie może zagwarantować, że widoczne informacje nigdy nie zostaną wydrukowane lub przechwycone. Przeglądarka może wydrukować stronę hosta, a użytkownicy mogą robić zrzuty ekranu lub zdjęcia. Przechwytywanie klawiatury i CSS specyficzny dla druku mogą poprawić oczekiwane doświadczenie, ale są to środki po stronie klienta, które można obejść.
Jeśli strona hosta nie powinna generować użytecznej kopii papierowej, Twoja aplikacja może użyć własnej prezentacji specyficznej dla druku, aby zastąpić podgląd komunikatem wyjaśniającym. Zachowaj to zachowanie strony hosta oddzielnie od udokumentowanych kontroli przeglądarki Doconut.
Nie opisuj tego jako ochrony dokumentu. Używaj renderowania po stronie serwera, autoryzacji, kontrolowanych eksportów i widocznych znaków wodnych, gdy ocena ryzyka wymaga silniejszego odstraszania.
6. Trzymaj pobieranie, eksport i drukowanie oddzielnie
Użytkownicy i programiści często traktują je jako jedno przełącznik „tylko do odczytu”, ale reprezentują różne przepływy danych:
- View wyświetla renderowaną treść.
- Download zwraca źródło lub inny przechowywany plik.
- Export tworzy format pochodny.
- Print tworzy reprezentację do druku lub wywołuje drukowanie w przeglądarce.
Autoryzuj każdą operację wyraźnie. Użytkownik, który nie może drukować, może nadal mieć prawo do pobierania, lub odwrotnie. Twój pasek narzędzi powinien odzwierciedlać decyzje serwera, a nie je definiować.
7. Dodaj przydatne zdarzenia audytu
Jeśli drukowanie jest wrażliwe, zarejestruj decyzję bez logowania samego dokumentu. Zdarzenie może zawierać użytkownika, najemcę, identyfikator dokumentu, wersję, wynik polityki, znacznik czasu i identyfikator korelacji.
Rejestruj zarówno udane, jak i odrzucone próby. Jeśli usługa drukowania tworzy tymczasowy plik, zarejestruj również, czy jego czyszczenie zostało zakończone. Trzymaj ścieżki plików, tokeny, tytuły dokumentów zawierające dane osobowe oraz treść do druku poza rutynowymi logami.
8. Testuj poza brakującym przyciskiem
Pasek narzędzi to tylko pierwsze założenie. Dodaj testy dla całej operacji:
Użytkownik uprawniony
- Planowana akcja drukowania jest widoczna.
- Żądanie drukowania kończy się sukcesem dla dozwolonego dokumentu.
- Używana jest właściwa wersja.
- Wymagane oznaczenia pojawiają się w wygenerowanym wyjściu.
- Zdarzenie audytu rejestruje sukces.
Użytkownik nieuprawniony
- Akcja jest nieobecna lub wyłączona.
- Bezpośrednie żądanie do trasy drukowania zwraca odpowiedź zabronioną.
- Zmiana identyfikatora dokumentu nie omija reguły.
- Adres URL skopiowany z sesji uprawnionej nie może być niewłaściwie ponownie użyty.
- Odmowa nie ujawnia, czy inny najemca jest właścicielem dokumentu.
Zmiany stanu
- Uprawnienie cofnięte w trakcie sesji jest egzekwowane przy następnym żądaniu drukowania.
- Wygasła sesja nie może drukować.
- Usunięty lub zastąpiony dokument generuje kontrolowany błąd.
- Tymczasowy wynik drukowania podlega skonfigurowanej regule przechowywania.
Automatyzacja przeglądarki może zweryfikować widoczny stan i kod odpowiedzi. Testy integracyjne powinny niezależnie weryfikować ocenę polityki i autoryzację na poziomie dokumentu.
Częste pytania
Czy ukrycie przycisku drukowania zatrzymuje skrót drukowania w przeglądarce?
Nie. Usuwa ono zamierzoną akcję przeglądarki tylko wtedy, gdy zainstalowany podgląd implementuje to zachowanie. Drukowanie w przeglądarce i przechwytywanie ekranu wymagają odrębnego rozważenia i nie mogą być w pełni zapobiegnięte kodem po stronie klienta.
Czy uprawnienie do drukowania powinno być zawarte w URL podglądu?
Preferuj decyzję autoryzacji po stronie serwera powiązaną z uwierzytelnionym użytkownikiem, dokumentem i operacją. Jeśli tymczasowe odniesienie niesie uprawnienia, ogranicz je wąsko, chroń przed logami i odnośnikami oraz ponownie weryfikuj wrażliwe działania.
Czy wyłączenie drukowania wystarczy dla poufnych dokumentów?
Nie. To tylko jedno z narzędzi użyteczności lub odstraszania. Poufne procesy wymagają także ochrony przechowywania, autoryzacji na poziomie obiektu, kontrolowanych eksportów, reguł retencji, monitorowania oraz przyjętego modelu ryzyka resztkowego.
Wnioski
Solidna implementacja kontroli drukowania Doconut zaczyna się po stronie serwera i kończy w interfejsie. Zdefiniuj politykę, zabezpiecz operację, skonfiguruj tylko udokumentowaną opcję dla zainstalowanego podglądu, wyjaśnij wynik użytkownikom i testuj bezpośrednie żądania oraz widoczność paska narzędzi. Korzystaj z oficjalnej strony funkcji, dokumentacji, pobrań i demonstracji jako źródeł implementacji, zamiast odtwarzać kod produktu w artykule.