นี่คือวิธีที่ Inertia.js จัดการการรับรองความถูกต้องและการอนุญาตในแอปพลิเคชันหน้าเดียว (SPA):
การรับรองความถูกต้อง
1. Inertia.js ไม่ต้องการระบบการตรวจสอบสิทธิ์พิเศษเช่น OAuth แต่จะอนุญาตให้คุณใช้ระบบการตรวจสอบสิทธิ์ที่ได้รับจากเฟรมเวิร์กฝั่งเซิร์ฟเวอร์ของคุณแทน เช่น ระบบการตรวจสอบสิทธิ์แบบอิงเซสชันใน Laravel [3]
2. ชุดเริ่มต้นของ Laravel อย่าง Breeze และ Jetstream มอบโครงสร้างที่พร้อมใช้งานทันทีสำหรับแอปพลิเคชัน Inertia.js ใหม่ รวมถึงฟังก์ชันการตรวจสอบสิทธิ์ [3]
3. ในการเข้าถึงผู้ใช้ที่ได้รับการตรวจสอบสิทธิ์ในส่วนประกอบ Inertia.js ของคุณ คุณสามารถใช้เมธอด `Inertia.share()` เพื่อส่งผ่านผู้ใช้ที่ได้รับการตรวจสอบสิทธิ์เป็นอุปกรณ์ประกอบฉากไปยังเพจของคุณ [4]
การอนุญาต
1. สำหรับการอนุญาตตามประเภททรัพยากร (เช่น ผู้ใช้สามารถดูโมดูลโพสต์หรือสร้างโพสต์ใหม่ได้) คุณสามารถส่งการตรวจสอบการอนุญาตเป็นอุปกรณ์ประกอบฉากไปยังส่วนประกอบของเพจ Inertia.js ของคุณได้ [1][2]
2. ในการตรวจสอบการอนุญาตสำหรับเอนทิตีทรัพยากรเฉพาะ (เช่น ผู้ใช้สามารถแก้ไขโพสต์ใดโพสต์หนึ่งได้) คุณสามารถเพิ่มแอตทริบิวต์ `การอนุญาต` ให้กับโมเดล Eloquent ของคุณที่มีการตรวจสอบการอนุญาตสำหรับเอนทิตีนั้น จากนั้น คุณสามารถส่งข้อมูล `สิทธิ์' นี้เป็นอุปกรณ์ประกอบฉากไปยังส่วนประกอบ Inertia.js ของคุณได้ [4]
3. สิ่งสำคัญคือต้องทำการตรวจสอบการอนุญาตบนฝั่งเซิร์ฟเวอร์ จากนั้นส่งต่อผลลัพธ์ไปยังส่วนประกอบ Inertia.js ของคุณเป็นอุปกรณ์ประกอบฉาก เพื่อให้แน่ใจว่าตรรกะการอนุญาตจะไม่ถูกเปิดเผยบนฝั่งไคลเอ็นต์ ซึ่งอาจถูกแก้ไขได้ [4]
4. Inertia.js ไม่มีระบบการอนุญาตของตัวเอง แต่รวมเข้ากับระบบการอนุญาตของเฟรมเวิร์กฝั่งเซิร์ฟเวอร์ของคุณ (เช่น ประตูและนโยบายของ Laravel) [4]
โดยสรุป Inertia.js จัดการการรับรองความถูกต้องโดยใช้ประโยชน์จากระบบการรับรองความถูกต้องของเฟรมเวิร์กฝั่งเซิร์ฟเวอร์ของคุณ และจัดการการให้สิทธิ์โดยดำเนินการตรวจสอบในฝั่งเซิร์ฟเวอร์และส่งผลลัพธ์เป็นอุปกรณ์ประกอบฉากไปยังส่วนประกอบ Inertia.js ของคุณ วิธีการนี้ช่วยให้แน่ใจว่าตรรกะการรับรองความถูกต้องและการอนุญาตจะถูกเก็บไว้อย่างปลอดภัยบนฝั่งเซิร์ฟเวอร์
การอ้างอิง:[1] https://inertiajs.com/authorization
[2] https://legacy.inertiajs.com/authorization
[3] https://inertiajs.com/authentication
[4] https://sebastiandedeyne.com/handling-authorization-in-a-laravel-and-inertia-application
[5] https://www.youtube.com/watch?v=1xHfpDhuPzA
-