แคตาล็อกฟีเจอร์ของ Doconut feature catalog ระบุว่าการพิมพ์จากเบราว์เซอร์และการส่งออกเป็น PDF เป็นความสามารถของตัวดูเอกสาร การควบคุมการเข้าถึงยังคงต้องการการตัดสินใจสองอย่างแยกกัน: ว่า Doconut จะแสดงการกระทำที่เกี่ยวข้องหรือไม่ และว่าแอปพลิเคชันโฮสต์จะอนุญาตการดำเนินการนั้นสำหรับผู้ใช้และเอกสารปัจจุบันหรือไม่

สำหรับการควบคุมที่สนับสนุนโดยการสร้างที่ติดตั้งของคุณอย่างแม่นยำ ให้เริ่มต้นด้วย เอกสารของ Doconut และตัวอย่างที่จัดแพ็คพร้อมให้จาก หน้าดาวน์โหลดของ Doconut อย่างเป็นทางการ อย่าคัดลอกคีย์การกำหนดค่า หรือโค้ดต้นฉบับจากเวอร์ชันที่ไม่เกี่ยวข้องหรือบทความที่ไม่ได้รับการตรวจสอบ
1. กำหนดนโยบายการพิมพ์ก่อน
จดบันทึกว่าผู้ใดสามารถพิมพ์ได้และภายใต้เงื่อนไขใดบ้างก่อนที่จะเปลี่ยนแถบเครื่องมือ นโยบายที่มีประโยชน์จะตอบคำถามเช่น:
- การพิมพ์ได้รับอนุญาตสำหรับผู้ดูเอกสารทุกคน, เฉพาะบางบทบาท, หรือเอกสารเฉพาะหรือไม่?
- การตัดสินใจขึ้นอยู่กับผู้เช่า, สถานะคดี, การจัดประเภทเอกสาร, หรือวันหมดอายุหรือไม่?
- ต้องการลายน้ำบนผลลัพธ์ที่พิมพ์หรือไม่?
- ควรทำการตรวจสอบเหตุการณ์การพิมพ์หรือไม่?
- ผู้ใช้สามารถพิมพ์ฉบับแก้ไขเก่าของเอกสารได้หรือไม่?
- จะเกิดอะไรขึ้นเมื่อสิทธิ์เปลี่ยนแปลงขณะที่การพรีวิวเปิดอยู่?
หลีกเลี่ยงการใช้ค่า Boolean ทั่วโลกเพียงค่าเดียวเมื่อกฎที่แท้จริงเป็นตามบริบท ให้จำลองการพิมพ์เป็นการดำเนินการแยกเพื่อให้สามารถอนุญาตได้อย่างอิสระจากการดูและการดาวน์โหลด
2. แยกสถานะ UI ออกจากการอนุญาต
หน้าโฮสต์สามารถตัดสินใจว่าจะนำเสนอการควบคุมการพิมพ์หรือไม่หลังจากที่ได้รับผลลัพธ์ของสิทธิ์ที่เป็นของแอปพลิเคชัน สิ่งนี้ช่วยเพิ่มความชัดเจนสำหรับผู้ใช้ที่ไม่สามารถพิมพ์ได้
อย่างไรก็ตาม การซ่อนการควบคุมไม่ได้เป็นขอบเขตการอนุญาต ผู้ใช้ยังสามารถเรียก endpoint ที่รู้จักโดยตรง, เล่นซ้ำคำขอก่อนหน้า, หรือเรียกการพิมพ์ของเบราว์เซอร์บนเนื้อหาที่มองเห็นได้ ทุกเส้นทางเซิร์ฟเวอร์ที่สร้างผลลัพธ์ที่พิมพ์ได้ต้องบังคับใช้นโยบายเดียวกัน
ใช้สถานะที่แตกต่างกันใน UI:
| สถานะ | พฤติกรรมของผู้ดู | พฤติกรรมของเซิร์ฟเวอร์ |
|---|---|---|
| อนุญาตการพิมพ์ | แสดงการกระทำการพิมพ์ที่รองรับ | อนุญาตและสร้างผลลัพธ์ที่ร้องขอ |
| ปฏิเสธการพิมพ์ | ซ่อนหรือปิดการทำงานพร้อมคำอธิบายที่ชัดเจน | ส่งคืนการตอบสนองที่ห้าม |
| นโยบายไม่ทราบ | ทำให้การกระทำไม่พร้อมใช้งานขณะกำลังโหลดสิทธิ์ | ไม่สร้างผลลัพธ์ |
| เซสชันหมดอายุ | ขอให้ผู้ใช้ทำการยืนยันตัวตนใหม่ | ปฏิเสธคำขอที่ล้าสมัย |
3. ปกป้อง Endpoint การพิมพ์
ปกป้องการดำเนินการของแอปพลิเคชันที่เรียกการพิมพ์หรือส่งผลลัพธ์ที่พิมพ์ได้ การตัดสินใจอนุญาตควรคำนึงถึงสมาชิกของผู้เช่า, ความเป็นเจ้าของ, การจัดประเภท, สถานะของเวิร์กโฟลว์, และฉบับแก้ไขของเอกสาร ให้แก้ไขเอกสารบนเซิร์ฟเวอร์แทนการรับเส้นทางหรือ URL ที่จัดเก็บจากลูกค้า
หากแอปพลิเคชันของคุณพิมพ์ผ่านเส้นทางเฉพาะของผู้ดูแทนการสร้าง PDF ให้ใช้การอนุญาตเดียวกันก่อนเรียกเส้นทางนั้น
4. กำหนดค่ารุ่นตัวดูที่ติดตั้ง
เมื่อมีกฎของเซิร์ฟเวอร์แล้ว ให้กำหนดค่า UI ของ Doconut โดยใช้ตัวเลือกที่ระบุอย่างแม่นยำในเอกสารสำหรับแพ็กเกจและไฟล์ตัวอย่างที่มาพร้อมกับเวอร์ชันของคุณ สาธิตสดของ Doconut ให้คุณสังเกตพฤติกรรมของผู้ดูที่รองรับก่อนที่คุณจะทำการรวมเข้ากับระบบเฉพาะ ตรวจสอบ:
- ตำแหน่งที่ตั้งค่าตัวเลือก: การกำหนดค่าเซิร์ฟเวอร์, โมเดลมุมมอง, หรือการเริ่มต้นของไคลเอนต์
- ว่ามันซ่อนรายการในแถบเครื่องมือ, ปิดการทำงานของการกระทำ, หรือมีผลต่อผลลัพธ์ที่สร้างขึ้นหรือไม่
- ว่าค่าดังกล่าวใช้กับแต่ละอินสแตนซ์ของผู้ดูหรือทั่วทั้งระบบ
- ว่าการพิมพ์และการส่งออกเป็นการดำเนินการแยกกันหรือไม่
- ว่าการอัปเดตได้เปลี่ยนชื่อหรือค่าเริ่มต้นของตัวเลือกหรือไม่
ถือว่าตัวอย่างอย่างเป็นทางการเป็นแหล่งความจริง ชื่อคุณสมบัติที่ดูสมเหตุสมผลไม่เพียงพอที่จะเป็นหลักฐานว่าตัวดูที่ติดตั้งรับรู้มัน.
5. จัดการการพิมพ์ของเบราว์เซอร์อย่างตรงไปตรงมา
การตั้งค่าผู้ชมไม่สามารถรับประกันว่าข้อมูลที่มองเห็นจะไม่ถูกพิมพ์หรือบันทึกได้เลย เบราว์เซอร์อาจพิมพ์หน้าผู้โฮสต์และผู้ใช้สามารถถ่ายภาพหน้าจอหรือถ่ายรูปได้ การดักจับแป้นพิมพ์และ CSS เฉพาะการพิมพ์สามารถปรับปรุงประสบการณ์ที่คาดหวังได้ แต่ก็เป็นมาตรการที่สามารถหลีกเลี่ยงได้ทางฝั่งคลไอเอนท์
หากหน้าผู้โฮสต์ไม่ควรสร้างสำเนากระดาษที่มีประโยชน์ แอปพลิเคชันของคุณสามารถใช้การนำเสนอเฉพาะการพิมพ์ของตนเองเพื่อแทนที่การแสดงตัวอย่างด้วยข้อความอธิบาย แยกพฤติกรรมของหน้าผู้โฮสต์นี้ออกจากการควบคุมผู้ชมที่ระบุในเอกสารของ Doconut
อย่าอธิบายสิ่งนี้ว่าเป็นการปกป้องเอกสาร ใช้การเรนเดอร์ฝั่งเซิร์ฟเวอร์, การอนุญาต, การส่งออกที่ควบคุม, และลายน้ำที่มองเห็นได้เมื่อการประเมินความเสี่ยงของคุณเรียกร้องให้มีการขับไล่ที่เข้มงวดขึ้น
6. แยกการดาวน์โหลด, การส่งออก, และการพิมพ์ออกจากกัน
ผู้ใช้และนักพัฒนามักมองว่าสิ่งเหล่านี้เป็นสวิตช์ “อ่านอย่างเดียว” เพียงอันเดียว แต่จริงๆ แล้วเป็นการไหลของข้อมูลที่แตกต่างกัน:
- View แสดงเนื้อหาที่เรนเดอร์แล้ว
- Download ส่งคืนแหล่งที่มาหรือไฟล์ที่จัดเก็บอื่น
- Export สร้างรูปแบบที่ได้มาจากต้นฉบับ
- Print สร้างการแสดงผลที่สามารถพิมพ์ได้หรือเรียกการพิมพ์ของเบราว์เซอร์
อนุญาตแต่ละการดำเนินการอย่างชัดเจน ผู้ใช้ที่ไม่สามารถพิมพ์อาจยังได้รับอนุญาตให้ดาวน์โหลดได้ หรือในทางกลับกัน แถบเครื่องมือของคุณควรสะท้อนการตัดสินใจของเซิร์ฟเวอร์แทนการกำหนดเอง
7. เพิ่มเหตุการณ์ตรวจสอบที่มีประโยชน์
หากการพิมพ์เป็นเรื่องสำคัญ ให้บันทึกการตัดสินใจโดยไม่บันทึกเอกสารเอง เหตุการณ์สามารถรวมผู้ใช้, ผู้เช่า, ตัวระบุเอกสาร, รุ่น, ผลลัพธ์ของนโยบาย, เวลา, และรหัสการเชื่อมโยง
บันทึกทั้งความพยายามที่สำเร็จและที่ถูกปฏิเสธ หากบริการพิมพ์สร้างไฟล์ชั่วคราว ให้บันทึกด้วยว่าการทำความสะอาดเสร็จสมบูรณ์หรือไม่ เก็บเส้นทางไฟล์, โทเคน, ชื่อเอกสารที่มีข้อมูลส่วนบุคคล, และเนื้อหาที่พิมพ์ได้ให้อยู่นอกบันทึกประจำ
8. ทดสอบเกินกว่าปุ่มที่หายไป
แถบเครื่องมือเป็นเพียงการยืนยันครั้งแรกเท่านั้น เพิ่มการทดสอบสำหรับการดำเนินการทั้งหมด:
ผู้ใช้ที่ได้รับอนุญาต
- การกระทำการพิมพ์ที่ตั้งใจให้เห็นได้
- คำขอพิมพ์สำเร็จสำหรับเอกสารที่ได้รับอนุญาต
- ใช้รุ่นที่ถูกต้อง
- เครื่องหมายที่จำเป็นปรากฏบนผลลัพธ์ที่สร้างขึ้น
- เหตุการณ์ตรวจสอบบันทึกความสำเร็จ
ผู้ใช้ที่ไม่ได้รับอนุญาต
- การกระทำไม่มีหรือถูกปิดใช้งาน
- คำขอโดยตรงไปยังเส้นทางพิมพ์คืนค่าตอบกลับเป็นการห้าม
- การเปลี่ยน ID ของเอกสารไม่ข้ามกฎ
- URL ที่คัดลอกจากเซสชันที่ได้รับอนุญาตไม่สามารถนำมาใช้ซ้ำอย่างไม่เหมาะสม
- การปฏิเสธไม่เปิดเผยว่าผู้เช่าอื่นเป็นเจ้าของเอกสารหรือไม่
การเปลี่ยนแปลงสถานะ
- การยกเลิกสิทธิ์ระหว่างเซสชันจะถูกบังคับใช้ในการขอพิมพ์ครั้งถัดไป
- เซสชันที่หมดอายุไม่สามารถพิมพ์ได้
- เอกสารที่ถูกลบหรือถูกแทนที่จะสร้างข้อผิดพลาดที่ควบคุมได้
- ผลลัพธ์การพิมพ์ชั่วคราวจะปฏิบัติตามกฎการเก็บรักษาที่กำหนด
การทำอัตโนมัติของเบราว์เซอร์สามารถตรวจสอบสถานะที่มองเห็นและรหัสตอบกลับได้ การทดสอบแบบบูรณาการควรตรวจสอบการประเมินนโยบายและการอนุญาตระดับเอกสารอย่างอิสระ
คำถามที่พบบ่อย
การซ่อนปุ่มพิมพ์จะหยุดทางลัดการพิมพ์ของเบราว์เซอร์หรือไม่?
ไม่. มันจะลบการกระทำของผู้ชมที่ตั้งใจไว้เฉพาะเมื่อผู้ชมที่ติดตั้งทำพฤติกรรมนั้น การพิมพ์ของเบราว์เซอร์และการจับภาพหน้าจอต้องพิจารณาแยกกันและไม่สามารถป้องกันได้อย่างสมบูรณ์โดยโค้ดฝั่งคลไอเอนท์
ควรใส่สิทธิ์การพิมพ์ไว้ใน URL การดูหรือไม่?
ควรเลือกการตัดสินใจการอนุญาตฝั่งเซิร์ฟเวอร์ที่เชื่อมโยงกับผู้ใช้ที่ผ่านการตรวจสอบ, เอกสาร, และการดำเนินการ หากอ้างอิงชั่วคราวมีสิทธิ์ ควรกำหนดขอบเขตให้แคบ, ปกป้องจากบันทึกและผู้อ้างอิง, และตรวจสอบการกระทำที่สำคัญอีกครั้ง
การปิดการพิมพ์เพียงอย่างเดียวพอสำหรับเอกสารที่เป็นความลับหรือไม่?
ไม่. นั่นเป็นเพียงการควบคุมด้านการใช้งานหรือการขับไล่เท่านั้น กระบวนการทำงานที่เป็นความลับยังต้องการการปกป้องการจัดเก็บ, การอนุญาตระดับวัตถุ, การส่งออกที่ควบคุม, กฎการเก็บรักษา, การเฝ้าติดตาม, และโมเดลความเสี่ยงที่เหลือที่ยอมรับได้
สรุป
การนำการควบคุมการพิมพ์ของ Doconut ที่เชื่อถือได้เริ่มจากเซิร์ฟเวอร์และสิ้นสุดที่ส่วนติดต่อผู้ใช้ กำหนดนโยบาย, ปกป้องการดำเนินการ, กำหนดค่าเฉพาะตัวเลือกที่ระบุในเอกสารสำหรับผู้ชมที่ติดตั้ง, อธิบายผลลัพธ์ให้ผู้ใช้ทราบ, และทดสอบคำขอโดยตรงรวมถึงการมองเห็นของแถบเครื่องมือ ใช้หน้าฟีเจอร์อย่างเป็นทางการ, เอกสาร, การดาวน์โหลด, และสาธิตเป็นแหล่งข้อมูลการนำไปใช้แทนการสร้างโค้ดผลิตภัณฑ์ในบทความ