Oto jak Inertia.js zarządza uwierzytelnianiem i autoryzacją w aplikacjach jednostronicowych (SPA):
Uwierzytelnianie
1. Inertia.js nie wymaga specjalnego systemu uwierzytelniania, takiego jak OAuth. Zamiast tego umożliwia korzystanie z systemu uwierzytelniania zapewnianego przez platformę po stronie serwera, takiego jak system uwierzytelniania oparty na sesji w Laravel. [3]
2. Zestawy startowe Laravel, Breeze i Jetstream, zapewniają gotowe do użycia rusztowanie dla nowych aplikacji Inertia.js, w tym funkcję uwierzytelniania. [3]
3. Aby uzyskać dostęp do uwierzytelnionego użytkownika w komponentach Inertia.js, możesz użyć metody `Inertia.share()`, aby przekazać uwierzytelnionego użytkownika jako rekwizyt do swoich stron. [4]
Autoryzacja
1. W przypadku autoryzacji opartej na typach zasobów (np. czy użytkownik może przeglądać moduł postów lub tworzyć nowy post), możesz przekazać kontrole autoryzacji jako rekwizyty do komponentów strony Inertia.js. [1] [2]
2. Aby sprawdzić autoryzację dla określonych encji zasobów (np. czy użytkownik może edytować konkretny post), możesz dodać atrybut `permissions` do swoich modeli Eloquent, który zawiera kontrole autoryzacji dla tej encji. Następnie możesz przekazać te dane „uprawnień” jako rekwizyt do komponentów Inertia.js. [4]
3. Kluczem jest przeprowadzenie kontroli autoryzacji po stronie serwera, a następnie przekazanie wyników do komponentów Inertia.js jako rekwizytów. Dzięki temu logika autoryzacji nie jest ujawniona po stronie klienta, co mogłoby zostać naruszone. [4]
4. Inertia.js nie zapewnia własnego systemu autoryzacji, ale raczej integruje się z systemem autoryzacji Twojego frameworka po stronie serwera (np. Laravel's Gate i Policies). [4]
Podsumowując, Inertia.js zarządza uwierzytelnianiem, wykorzystując system uwierzytelniania platformy po stronie serwera, a także obsługuje autoryzację, przeprowadzając kontrole po stronie serwera i przekazując wyniki jako rekwizyty do komponentów Inertia.js. Takie podejście zapewnia bezpieczeństwo logiki uwierzytelniania i autoryzacji po stronie serwera.
Cytaty:[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