Tài liệu chính thức danh mục tính năng Doconut liệt kê việc in trình duyệt và xuất PDF như là các khả năng của trình xem. Kiểm soát quyền truy cập vào chúng vẫn đòi hỏi hai quyết định riêng biệt: liệu Doconut có hiển thị hành động liên quan hay không và liệu ứng dụng máy chủ có ủy quyền cho hoạt động đó đối với người dùng và tài liệu hiện tại hay không.

Để biết các kiểm soát chính xác được hỗ trợ bởi bản dựng đã cài đặt, hãy bắt đầu với tài liệu Doconut và các mẫu được đóng gói có sẵn từ trang tải xuống Doconut chính thức. Không sao chép các khóa cấu hình hoặc mã nguồn từ một phiên bản không liên quan hoặc một bài viết chưa được xác minh.
1. Xác định Chính sách In trước tiên
Ghi lại ai có thể in và dưới những điều kiện nào trước khi thay đổi thanh công cụ. Một chính sách hữu ích trả lời các câu hỏi như:
- In có được phép cho mọi người xem, chỉ một số vai trò nhất định, hay cho các tài liệu cụ thể không?
- Quyết định có phụ thuộc vào đơn vị thuê, trạng thái vụ việc, phân loại tài liệu, hay thời hạn không?
- Có cần dấu nước trên đầu ra có thể in không?
- Các sự kiện in có nên được ghi audit không?
- Người dùng có thể in một phiên bản tài liệu cũ không?
- Điều gì sẽ xảy ra khi quyền thay đổi trong khi bản xem trước đang mở?
Tránh sử dụng một giá trị Boolean toàn cục khi quy tắc thực tế là ngữ cảnh. Mô hình hoá việc in như một hoạt động riêng để có thể ủy quyền độc lập với việc xem và tải xuống.
2. Tách Trạng thái UI khỏi Ủy quyền
Trang chủ có thể quyết định có hiển thị điều khiển in sau khi nhận được kết quả quyền sở hữu ứng dụng. Điều này cải thiện tính rõ ràng cho người dùng không thể in.
Tuy nhiên, việc ẩn một điều khiển không phải là ranh giới ủy quyền. Người dùng vẫn có thể gọi trực tiếp một điểm cuối đã biết, phát lại một yêu cầu trước đó, hoặc kích hoạt in trình duyệt trên nội dung hiển thị. Mọi route máy chủ tạo ra đầu ra có thể in phải thực thi cùng một chính sách.
Sử dụng các trạng thái riêng biệt trong UI:
| Trạng thái | Hành vi trình xem | Hành vi máy chủ |
|---|---|---|
| Cho phép in | Hiển thị hành động in được hỗ trợ | Ủy quyền và tạo đầu ra yêu cầu |
| Không cho phép in | Ẩn hoặc vô hiệu hoá hành động kèm lời giải thích rõ ràng | Trả về phản hồi bị cấm |
| Chính sách không xác định | Giữ hành động không khả dụng trong khi quyền đang tải | Không tạo đầu ra |
| Phiên đã hết hạn | Yêu cầu người dùng xác thực lại | Từ chối yêu cầu lỗi thời |
3. Bảo vệ Điểm cuối In
Bảo vệ hoạt động ứng dụng mà gọi tới việc in hoặc trả về đầu ra có thể in. Quyết định ủy quyền nên tính đến thành viên đơn vị thuê, quyền sở hữu, phân loại, trạng thái quy trình và phiên bản tài liệu. Giải quyết tài liệu trên máy chủ thay vì chấp nhận đường dẫn hoặc URL lưu trữ do client cung cấp.
Nếu ứng dụng của bạn in thông qua một route riêng cho trình xem thay vì tạo PDF, hãy áp dụng cùng một ủy quyền trước khi gọi route đó.
4. Cấu hình Phiên bản Trình xem Đã Cài đặt
Khi quy tắc máy chủ đã tồn tại, cấu hình UI Doconut bằng tùy chọn chính xác được ghi trong tài liệu cho gói và các tệp mẫu đi kèm với phiên bản của bạn. Các bản demo trực tiếp Doconut cho phép bạn quan sát hành vi trình xem được hỗ trợ trước khi cam kết vào một tích hợp cụ thể. Xác minh:
- Nơi tùy chọn được đặt: cấu hình máy chủ, view model, hay khởi tạo client.
- Nó có ẩn mục thanh công cụ, vô hiệu hoá hành động, hay ảnh hưởng tới đầu ra được tạo không.
- Giá trị áp dụng cho mỗi phiên bản trình xem hay toàn cục.
- In và xuất có phải là các hoạt động riêng biệt không.
- Một bản cập nhật có thay đổi tên tùy chọn hoặc giá trị mặc định không.
Xem mẫu chính thức như là nguồn thông tin duy nhất. Một tên thuộc tính trông hợp lý không đủ bằng chứng để khẳng định trình xem đã cài đặt nhận ra nó.
5. Xử lý việc in trên trình duyệt một cách trung thực
Một cài đặt trình xem không thể đảm bảo rằng thông tin hiển thị sẽ không bao giờ bị in hoặc ghi lại. Trình duyệt có thể in trang chủ, và người dùng có thể chụp ảnh màn hình hoặc chụp ảnh. Việc chặn bàn phím và CSS riêng cho in có thể cải thiện trải nghiệm mong muốn, nhưng chúng là các biện pháp phía máy khách có thể bị vượt qua.
Nếu trang chủ không nên tạo ra một bản sao giấy có giá trị, ứng dụng của bạn có thể sử dụng giao diện riêng cho in để thay thế phần xem trước bằng một thông báo giải thích. Giữ hành vi của trang chủ này tách biệt khỏi các điều khiển trình xem được tài liệu hoá của Doconut.
Không mô tả điều này là bảo vệ tài liệu. Hãy sử dụng render phía máy chủ, ủy quyền, xuất khẩu có kiểm soát và dấu nước hiển thị khi đánh giá rủi ro của bạn yêu cầu biện pháp ngăn chặn mạnh hơn.
6. Tách biệt tải xuống, xuất và in
Người dùng và nhà phát triển thường coi chúng như một công tắc “chỉ đọc” duy nhất, nhưng chúng đại diện cho các luồng dữ liệu khác nhau:
- Xem hiển thị nội dung đã render.
- Tải xuống trả về nguồn hoặc một tệp lưu trữ khác.
- Xuất tạo ra một định dạng phụ.
- In tạo ra một bản đại diện có thể in hoặc kích hoạt việc in của trình duyệt.
Hãy ủy quyền mỗi thao tác một cách rõ ràng. Người dùng không thể in vẫn có thể được phép tải xuống, hoặc ngược lại. Thanh công cụ của bạn nên phản ánh các quyết định của máy chủ thay vì tự định nghĩa chúng.
7. Thêm các sự kiện kiểm toán hữu ích
Nếu việc in là nhạy cảm, hãy ghi lại quyết định mà không ghi log nội dung tài liệu. Một sự kiện có thể bao gồm người dùng, tenant, định danh tài liệu, phiên bản, kết quả chính sách, thời gian, và ID tương quan.
Ghi lại cả các lần cố gắng thành công và bị từ chối. Nếu dịch vụ in tạo ra tệp tạm thời, cũng ghi lại việc dọn dẹp đã hoàn thành hay chưa. Giữ các đường dẫn tệp, token, tiêu đề tài liệu chứa dữ liệu cá nhân và nội dung có thể in ra khỏi các log thường xuyên.
8. Kiểm thử vượt ra ngoài việc thiếu nút
Thanh công cụ chỉ là khẳng định đầu tiên. Thêm các bài kiểm thử cho toàn bộ thao tác:
Người dùng được ủy quyền
- Hành động in dự định hiển thị.
- Yêu cầu in thành công cho tài liệu được phép.
- Phiên bản đúng được sử dụng.
- Các dấu hiệu yêu cầu xuất hiện trên đầu ra được tạo.
- Sự kiện kiểm toán ghi lại thành công.
Người dùng không được ủy quyền
- Hành động không có hoặc bị vô hiệu hoá.
- Yêu cầu trực tiếp tới đường dẫn in trả về phản hồi bị cấm.
- Thay đổi ID tài liệu không bỏ qua quy tắc.
- URL sao chép từ phiên được ủy quyền không thể được sử dụng lại một cách không đúng.
- Việc từ chối không tiết lộ liệu tenant khác có sở hữu tài liệu hay không.
Thay đổi trạng thái
- Quyền bị thu hồi trong phiên sẽ được thực thi ở yêu cầu in tiếp theo.
- Phiên đã hết hạn không thể in.
- Tài liệu đã xóa hoặc bị thay thế tạo ra lỗi được kiểm soát.
- Đầu ra in tạm thời tuân theo quy tắc lưu trữ đã cấu hình.
Tự động hoá trình duyệt có thể xác minh trạng thái hiển thị và mã phản hồi. Các bài kiểm thử tích hợp nên xác minh việc đánh giá chính sách và ủy quyền cấp tài liệu một cách độc lập.
Câu hỏi thường gặp
Việc ẩn nút in có ngăn được phím tắt in của trình duyệt không?
Không. Nó chỉ loại bỏ hành động trình xem dự định nếu trình xem đã cài đặt thực hiện hành vi đó. Việc in trên trình duyệt và ghi lại màn hình cần được xem xét riêng và không thể ngăn hoàn toàn bằng mã phía máy khách.
Có nên bao gồm quyền in trong URL xem không?
Nên ưu tiên quyết định ủy quyền phía máy chủ gắn với người dùng đã xác thực, tài liệu và thao tác. Nếu một tham chiếu tạm thời mang quyền, hãy giới hạn phạm vi chặt chẽ, bảo vệ nó khỏi log và referrer, và xác thực lại các hành động nhạy cảm.
Vô hiệu hoá tính năng in có đủ cho tài liệu bí mật không?
Không. Đó chỉ là một biện pháp về tính khả dụng hoặc ngăn chặn. Quy trình làm việc với tài liệu bí mật cũng cần bảo vệ lưu trữ, ủy quyền cấp đối tượng, xuất khẩu có kiểm soát, quy tắc lưu trữ, giám sát và mô hình rủi ro dư thừa đã được chấp nhận.
Kết luận
Một triển khai kiểm soát in Doconut đáng tin cậy bắt đầu từ máy chủ và kết thúc ở giao diện. Định nghĩa chính sách, bảo vệ thao tác, chỉ cấu hình tùy chọn được tài liệu hoá cho trình xem đã cài đặt, giải thích kết quả cho người dùng, và kiểm thử các yêu cầu trực tiếp cũng như khả năng hiển thị thanh công cụ. Sử dụng trang tính năng chính thức, tài liệu, bản tải xuống và bản demo làm nguồn triển khai thay vì tái tạo mã sản phẩm trong bài viết.