Así es como Inertia.js administra la autenticación y autorización en aplicaciones de una sola página (SPA):
Autenticación
1. Inertia.js no requiere un sistema de autenticación especial como OAuth. En su lugar, le permite utilizar el sistema de autenticación proporcionado por su marco del lado del servidor, como el sistema de autenticación basado en sesiones en Laravel. [3]
2. Los kits de inicio de Laravel, Breeze y Jetstream, proporcionan un soporte listo para usar para las nuevas aplicaciones Inertia.js, incluida la funcionalidad de autenticación. [3]
3. Para acceder al usuario autenticado en sus componentes Inertia.js, puede usar el método `Inertia.share()` para pasar el usuario autenticado como accesorio a sus páginas. [4]
Autorización
1. Para la autorización basada en tipos de recursos (por ejemplo, si el usuario puede ver el módulo de publicaciones o crear una nueva publicación), puede pasar las comprobaciones de autorización como accesorios para los componentes de su página Inertia.js. [1][2]
2. Para verificar la autorización de entidades de recursos específicas (por ejemplo, si el usuario puede editar una publicación en particular), puede agregar un atributo de "permisos" a sus modelos de Eloquent que contenga las comprobaciones de autorización para esa entidad. Luego, puede pasar estos datos de "permisos" como accesorio a sus componentes de Inertia.js. [4]
3. La clave es realizar las comprobaciones de autorización en el lado del servidor y luego pasar los resultados a sus componentes de Inertia.js como accesorios. Esto garantiza que la lógica de autorización no quede expuesta en el lado del cliente, lo que podría alterarse. [4]
4. Inertia.js no proporciona su propio sistema de autorización, sino que se integra con el sistema de autorización de su marco del lado del servidor (por ejemplo, Laravel's Gate and Policies). [4]
En resumen, Inertia.js administra la autenticación aprovechando el sistema de autenticación de su marco del lado del servidor y maneja la autorización realizando las comprobaciones en el lado del servidor y pasando los resultados como accesorios a sus componentes de Inertia.js. Este enfoque garantiza que la lógica de autenticación y autorización se mantenga segura en el lado del servidor.
Citas:[1] https://inertiajs.com/autorización
[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