-
Sanctum(spa login, auth)Laravel 2020. 3. 26. 15:02반응형SMALL
1. 기본세팅
composer require laravel/sanctum laravel/ui
php artisan ui react --auth
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
php artisan migrate
@ app/Http/Kernel.php
use Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful; 'api' => [ EnsureFrontendRequestsAreStateful::class, 'throttle:60,1', \Illuminate\Routing\Middleware\SubstituteBindings::class, ],
@ .env(백엔드 돌아가는 도메인과 일치해야돼 이게, 실제 배포하고나서는 실제 주소로 해야겠지)
SESSION_DOMAIN=[.도메인 주소 => 세션 도메인은 localhost일 때는 localhost만 쓰면 되는데 실제 prod 레벨에서는 .shaty.co.kr처럼 맨 앞에 . 붙여야돼] SANCTUM_STATEFUL_DOMAINS=[도메인 주소]
@ .env 예시
// 루트 도메인을 쓰는 사이트 설정 SESSION_DOMAIN=.vrawer.com SANCTUM_STATEFUL_DOMAINS=vrawer.com // 서브 도메인을 쓰는 사이트 설정 SESSION_DOMAIN=.vrawer.com SANCTUM_STATEFUL_DOMAINS=lunch.vrawer.com
@ config/cors.php
'paths' => ['api/*', 'login', 'logout', 'sanctum/csrf-cookie'], 'supports_credentials' => true
@resources/js/bootstrap.js
axios.defaults.withCredentials = true;
@ api.php
Route::middleware('auth:sanctum')->get('/user', function (Request $request) { return $request->user(); });
@ User.php
class User extends Authenticatable { use HasApiTokens, Notifiable; }
2. 프론트 회원가입, 로그인 작업해놓기
@ 로그인
axios.get('/sanctum/csrf-cookie').then(response => { axios.post("/login", { email: "email@naver.com", password: "password" }) .then(response => { // 로그인 처리 }) });
@ 로그아웃
axios.post("/logout") .then(response => // 로그아웃 처리);
@ 사용자 정보 얻기
axios.get("/api/user").then(response => {})
* 주의
로그인 테스트 해보다 계속 home으로 redirect 시키면 쿠키값이 남아있어서 그런거임. 쿠키값 삭제하고 다시 로그인 테스트해
LIST'Laravel' 카테고리의 다른 글
이미지 다루기 with 미디어 라이브러리(Media Library) + S3 (0) 2020.04.21 API Resource, Collection (0) 2020.03.27 라라벨 + 리액트 타입스크립트(typescript) (0) 2020.03.26 아이디 기반을 이메일에서 폰번호나 닉네임으로 바꾸는법 (0) 2020.03.26 AWS 문자서비스(SNS) 연동 (0) 2020.03.25