Đây là cách Inertia.js quản lý xác thực và ủy quyền trong các ứng dụng một trang (SPA):
Xác thực
1. Inertia.js không yêu cầu hệ thống xác thực đặc biệt như OAuth. Thay vào đó, nó cho phép bạn sử dụng hệ thống xác thực được cung cấp bởi khung phía máy chủ của bạn, chẳng hạn như hệ thống xác thực dựa trên phiên trong Laravel. [3]
2. Bộ công cụ khởi đầu của Laravel, Breeze và Jetstream, cung cấp nền tảng sẵn có cho các ứng dụng Inertia.js mới, bao gồm cả chức năng xác thực. [3]
3. Để truy cập người dùng được xác thực trong các thành phần Inertia.js của bạn, bạn có thể sử dụng phương thức `Inertia.share()` để chuyển người dùng được xác thực làm chỗ dựa cho các trang của mình. [4]
Ủy quyền
1. Để ủy quyền dựa trên loại tài nguyên (ví dụ: người dùng có thể xem mô-đun bài đăng hoặc tạo bài đăng mới không), bạn có thể chuyển các bước kiểm tra ủy quyền dưới dạng đạo cụ cho các thành phần trang Inertia.js của mình. [1] [2]
2. Để kiểm tra ủy quyền cho các thực thể tài nguyên cụ thể (ví dụ: người dùng có thể chỉnh sửa một bài đăng cụ thể không), bạn có thể thêm thuộc tính `quyền` vào các mô hình Eloquent có chứa kiểm tra ủy quyền cho thực thể đó. Sau đó, bạn có thể chuyển dữ liệu `quyền` này làm chỗ dựa cho các thành phần Inertia.js của mình. [4]
3. Điều quan trọng là thực hiện kiểm tra ủy quyền ở phía máy chủ và sau đó chuyển kết quả đến các thành phần Inertia.js của bạn dưới dạng đạo cụ. Điều này đảm bảo rằng logic ủy quyền không bị lộ ở phía máy khách, điều này có thể bị giả mạo. [4]
4. Inertia.js không cung cấp hệ thống ủy quyền riêng mà tích hợp với hệ thống ủy quyền của khung phía máy chủ của bạn (ví dụ: Cổng và Chính sách của Laravel). [4]
Tóm lại, Inertia.js quản lý xác thực bằng cách tận dụng hệ thống xác thực của khung phía máy chủ của bạn và xử lý ủy quyền bằng cách thực hiện kiểm tra ở phía máy chủ và chuyển kết quả dưới dạng đạo cụ cho các thành phần Inertia.js của bạn. Cách tiếp cận này đảm bảo rằng logic xác thực và ủy quyền được giữ an toàn ở phía máy chủ.
Trích dẫn:[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