แพ็คเกจ Spatie จัดการการตรวจสอบความถูกต้องของผู้ใช้เป็นหลักผ่านชุดของกฎการตรวจสอบความถูกต้องของ Laravel แบบกำหนดเองและการรวมเข้ากับระบบการตรวจสอบความถูกต้องของ Laravel ซึ่งเป็นวิธีการที่มีโครงสร้างและขยายได้เพื่อตรวจสอบข้อมูลก่อนที่จะดำเนินการหรือบันทึก
การจัดการการตรวจสอบความถูกต้องในแพ็คเกจ Spatie
กฎการตรวจสอบความถูกต้องที่กำหนดเอง
Spatie นำเสนอชุดของกฎการตรวจสอบความถูกต้องที่มีประโยชน์ซึ่งขยายความสามารถในการตรวจสอบความถูกต้องของ Laravel กฎเหล่านี้สามารถใช้ในการร้องขอแบบฟอร์ม laravel หรือโดยตรงในตรรกะการตรวจสอบความถูกต้องของคอนโทรลเลอร์ ตัวอย่าง ได้แก่ :- กฎที่ได้รับอนุญาต: ตรวจสอบว่าผู้ใช้ที่เข้าสู่ระบบได้รับอนุญาตให้ดำเนินการเฉพาะในอินสแตนซ์แบบจำลองโดยการตรวจสอบนโยบายเช่นการจับคู่รหัสผู้ใช้ [1]
- กฎสกุลเงิน: ตรวจสอบว่าอินพุตที่กำหนดเป็นรหัสสกุลเงินที่ถูกต้องสนับสนุนมาตรฐาน ISO 3166 [1]
- กฎ enum: ตรวจสอบว่าค่าอินพุตเป็นของชุดค่า enum ที่กำหนดไว้ล่วงหน้าซึ่งมีประโยชน์สำหรับข้อมูลที่พิมพ์อย่างยิ่ง [1]
- กฎ ModelSexist: ตรวจสอบว่าค่าทั้งหมดในอาร์เรย์มีอยู่เป็นแอตทริบิวต์ในโมเดลที่ระบุหรือไม่
- กฎคั่น: ตรวจสอบสตริงที่มีค่าคั่น (เช่นอีเมลที่คั่นด้วยเครื่องหมายจุลภาค) รวมถึงตัวเลือกในการตั้งค่ารายการขั้นต่ำ/สูงสุดอนุญาตให้ทำซ้ำและปรับแต่งตัวคั่น [1]
กฎเหล่านี้รวมเข้ากับระบบการตรวจสอบความถูกต้องของ Laravel อย่างราบรื่นช่วยให้นักพัฒนาสามารถกำหนดได้ในกฎ `กฎ ()` วิธีการร้องขอแบบฟอร์มหรืออาร์เรย์การตรวจสอบแบบอินไลน์
การตรวจสอบความถูกต้องในแพ็คเกจข้อมูล Spatie Laravel
แพคเกจข้อมูล Spatie Laravel ช่วยเพิ่มการตรวจสอบโดยการตรวจสอบข้อมูลก่อนที่จะสร้างวัตถุข้อมูล การตรวจสอบความถูกต้องเกิดขึ้นโดยอัตโนมัติเมื่อ:- การฉีดวัตถุข้อมูลจากคำขอ
- เรียกใช้เมธอด `from` บนวัตถุข้อมูลที่มีข้อมูลคำขอ
นอกจากนี้คุณยังสามารถทริกเกอร์การตรวจสอบความถูกต้องด้วยตนเองผ่านวิธีการเช่น `ตรวจสอบ ()` หรือ `ValidateAndCreate ()` แพ็คเกจสนับสนุนการกำหนดค่ากลยุทธ์การตรวจสอบความถูกต้องเช่นการตรวจสอบหรือปิดการตรวจสอบความถูกต้องเสมอโดยให้การควบคุมอย่างละเอียดเมื่อมีการตรวจสอบความถูกต้อง [4]
การตรวจสอบสองขั้นตอน
Spatie กำลังสำรวจวิธีการตรวจสอบสองขั้นตอนโดยที่:- ขั้นตอนแรกใช้กฎพื้นฐานเพื่อให้แน่ใจว่าโครงสร้างข้อมูลเป็นเสียงและป้องกันข้อผิดพลาด PHP
- ขั้นตอนที่สองใช้กฎการตรวจสอบที่ซับซ้อนมากขึ้น
วิธีการนี้สามารถปรับปรุงความทนทานโดยการจับข้อผิดพลาด แต่เนิ่นๆและให้ข้อเสนอแนะการตรวจสอบความถูกต้องที่ชัดเจนยิ่งขึ้น [7]
การฆ่าเชื้อ
ในขณะที่แพ็คเกจของ Spatie มุ่งเน้นไปที่การตรวจสอบส่วนใหญ่ Laravel จัดการการฆ่าเชื้อโดยปริยายผ่านการตรวจสอบความถูกต้องและการเชื่อมโยงข้อมูล ตัวอย่างเช่นแบบฟอร์มของ Laravel ร้องขอการฆ่าเชื้อโดยอัตโนมัติโดยการตรวจสอบและการกรองข้อมูลก่อนที่จะใช้ในแอปพลิเคชัน กฎการตรวจสอบความถูกต้องของ SPATIE ช่วยเสริมสิ่งนี้โดยการสร้างความมั่นใจว่าข้อมูลเป็นไปตามกฎหรือรูปแบบทางธุรกิจที่เฉพาะเจาะจงนักพัฒนาสามารถขยายการฆ่าเชื้อโดยการสร้างแอตทริบิวต์การตรวจสอบความถูกต้องที่กำหนดเองหรือโดยการฆ่าเชื้อด้วยตนเองก่อนหรือหลังการตรวจสอบตามต้องการ [3]
สรุป
- Spatie จัดเตรียมกฎการตรวจสอบความถูกต้องของ Laravel สำหรับสถานการณ์การตรวจสอบความถูกต้องทั่วไปและซับซ้อนเช่นการตรวจสอบการอนุญาตการตรวจสอบความถูกต้องของ enum การตรวจสอบการดำรงอยู่และการตรวจสอบความถูกต้องของอินพุต [1]- แพ็คเกจข้อมูล Laravel จาก Spatie ตรวจสอบข้อมูลก่อนการสร้างวัตถุพร้อมตัวเลือกสำหรับการตรวจสอบความถูกต้องด้วยตนเองหรืออัตโนมัติและกลยุทธ์การตรวจสอบความถูกต้องที่กำหนดค่าได้ [4]
- กระบวนการตรวจสอบความถูกต้องสองขั้นตอนกำลังได้รับการพัฒนาเพื่อเพิ่มความทนทานของการตรวจสอบความถูกต้อง [7]
- การฆ่าเชื้อโดยทั่วไปได้รับการจัดการโดยการตรวจสอบความถูกต้องของ Laravel และกลไกการจัดการอินพุตด้วยเครื่องมือ spaties ที่มุ่งเน้นไปที่การตรวจสอบความถูกต้องและการขยายความสามารถในการตรวจสอบความถูกต้อง [3]
วิธีการนี้ช่วยให้มั่นใจได้ว่าการป้อนข้อมูลของผู้ใช้ได้รับการตรวจสอบอย่างเข้มงวดตามกฎเฉพาะแอปพลิเคชันก่อนการประมวลผลลดข้อผิดพลาดและปรับปรุงความปลอดภัย
การอ้างอิง:
[1] https://github.com/spatie/laravel-validation-rules
[2] https://zapkit.dev/blog/ultimate-guide-to-validate-and-sanitize-http-requests-laravel
[3] https://spatie.be/docs/laravel-data/v4/validation/using-validation-attributes
[4] https://spatie.be/docs/laravel-data/v4/validation/introduction
[5] https://escape.tech/blog/laravel-sql-injection-guide/
[6] https://www.youtube.com/watch?v=SW1DDJ5PCAM
[7] https://github.com/spatie/laravel-data/discussions/470
[8] https://stackoverflow.com/questions/72186973/Checking-for-user-permissions-with-spatie-patie-package-fails-in-routes และ in-Control
[9] https://spatie.be/docs/laravel-model-states/v2/request-validation/01-state-validation-rule