Voici comment Inertia.js gère l'authentification et l'autorisation dans les applications monopage (SPA) :
Authentification
1. Inertia.js ne nécessite pas de système d'authentification spécial comme OAuth. Au lieu de cela, il vous permet d'utiliser le système d'authentification fourni par votre infrastructure côté serveur, tel que le système d'authentification basé sur la session dans Laravel. [3]
2. Les kits de démarrage de Laravel, Breeze et Jetstream, fournissent un échafaudage prêt à l'emploi pour les nouvelles applications Inertia.js, y compris une fonctionnalité d'authentification. [3]
3. Pour accéder à l'utilisateur authentifié dans vos composants Inertia.js, vous pouvez utiliser la méthode `Inertia.share()` pour transmettre l'utilisateur authentifié comme accessoire à vos pages. [4]
Autorisation
1. Pour l'autorisation basée sur les types de ressources (par exemple, l'utilisateur peut-il afficher le module de publications ou créer une nouvelle publication), vous pouvez transmettre les contrôles d'autorisation en tant qu'accessoires aux composants de votre page Inertia.js. [1][2]
2. Pour vérifier l'autorisation pour des entités de ressources spécifiques (par exemple, l'utilisateur peut-il modifier une publication particulière), vous pouvez ajouter un attribut « autorisations » à vos modèles Eloquent qui contient les vérifications d'autorisation pour cette entité. Ensuite, vous pouvez transmettre ces données « autorisations » comme accessoire à vos composants Inertia.js. [4]
3. La clé est d'effectuer les vérifications d'autorisation côté serveur, puis de transmettre les résultats à vos composants Inertia.js en tant qu'accessoires. Cela garantit que la logique d'autorisation n'est pas exposée côté client, ce qui pourrait être falsifié. [4]
4. Inertia.js ne fournit pas son propre système d'autorisation, mais s'intègre plutôt au système d'autorisation de votre infrastructure côté serveur (par exemple, Laravel's Gate et les politiques). [4]
En résumé, Inertia.js gère l'authentification en exploitant le système d'authentification de votre infrastructure côté serveur, et gère l'autorisation en effectuant les vérifications côté serveur et en transmettant les résultats comme accessoires à vos composants Inertia.js. Cette approche garantit que la logique d'authentification et d'autorisation reste sécurisée côté serveur.
Citations :[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