Inertia.js가 단일 페이지 애플리케이션(SPA)에서 인증 및 권한 부여를 관리하는 방법은 다음과 같습니다.
인증
1. Inertia.js에는 OAuth와 같은 특별한 인증 시스템이 필요하지 않습니다. 대신, Laravel의 세션 기반 인증 시스템과 같이 서버 측 프레임워크에서 제공하는 인증 시스템을 사용할 수 있습니다. [삼]
2. Laravel의 스타터 키트인 Breeze 및 Jetstream은 인증 기능을 포함하여 새로운 Inertia.js 애플리케이션을 위한 기본 스캐폴딩을 제공합니다. [삼]
3. Inertia.js 구성 요소에서 인증된 사용자에 액세스하려면 `Inertia.share()` 메서드를 사용하여 인증된 사용자를 페이지에 prop으로 전달할 수 있습니다. [4]
승인
1. 리소스 유형에 따른 승인(예: 사용자가 게시물 모듈을 보거나 새 게시물을 작성할 수 있음)의 경우 승인 확인을 Inertia.js 페이지 구성 요소에 소품으로 전달할 수 있습니다. [1][2]
2. 특정 리소스 엔터티에 대한 승인을 확인하려면(예: 사용자가 특정 게시물을 편집할 수 있는지) 해당 엔터티에 대한 승인 확인을 포함하는 Eloquent 모델에 `permissions` 속성을 추가할 수 있습니다. 그런 다음 이 '권한' 데이터를 Inertia.js 구성 요소에 소품으로 전달할 수 있습니다. [4]
3. 핵심은 서버 측에서 인증 확인을 수행한 다음 결과를 Inertia.js 구성 요소에 소품으로 전달하는 것입니다. 이렇게 하면 변조될 수 있는 인증 논리가 클라이언트 측에 노출되지 않습니다. [4]
4. Inertia.js는 자체 인증 시스템을 제공하지 않지만 오히려 서버측 프레임워크(예: Laravel의 Gate 및 정책)의 인증 시스템과 통합됩니다. [4]
요약하면 Inertia.js는 서버 측 프레임워크의 인증 시스템을 활용하여 인증을 관리하고, 서버 측에서 검사를 수행하고 결과를 Inertia.js 구성 요소에 props로 전달하여 인증을 처리합니다. 이 접근 방식을 사용하면 인증 및 권한 부여 논리가 서버 측에서 안전하게 유지됩니다.
인용:[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