Laravel 5.6 :: JWT Token 연동하기

Laravel 5.6 :: JWT Token 연동하기

우선 시작하기 전에 기본적인 프로젝트 생성과 DB 연동 및 마이그레이트까지 완료 된 이후에 진행할것을 추천합니다.

1. JWT Auth 설치하기

$composer require tymon/jwt-auth

2. JWT 설정하기 :: config/app.php 파일에 아래와같이 추가해줍니다.

. . . 'providers' = > [ . . . Tymon \ JWTAuth \ Providers \ JWTAuthServiceProvider :: class , ] . . . 'aliases' = > [ . . . 'JWTAuth' = > Tymon \ JWTAuth \ Facades \ JWTAuth :: class , ]

3. 설정 실행하기

$ php artisan vendor : publish -- provider = "Tymon\JWTAuth\Providers\JWTAuthServiceProvider"

4. 시크릿키 생성하기

$php artisan jwt :generate

정상적으로 생성이 되었으면 config/jwt.php 파일 안에 시크릿키가 생성된걸 확인 할 수 있습니다.

* 키 생성중 handle() 을 찾을 수 없다거나 하는 에러가 나면

vendor/tymon/src/Commands/JWTGenerateCommand.php 파일에

public function handle() { $this->fire(); } <- 이 부분을 추가해 주신후 다시 실행해 주세요.

5 . app/Http/Kernal.php 에 아랫 부분을 추가해주세요.

protected $ routeMiddleware = [ . . . 'jwt.auth' = > \ Tymon \ JWTAuth \ Middleware \ GetUserFromToken :: class , 'jwt.refresh' = > \ Tymon \ JWTAuth \ Middleware \ RefreshToken :: class , ] ;

이렇게까지 하시면 기본적인 JWT 토큰 설정이 끝입니다.

이제 실제로 사용 될 기본적인 로그인/ 회원가입/ 로그아웃 기능을 구현해봅시다.

1. 컨트롤러 생성하기

$php artisan make:controller AuthController

2. 라우터에 API 추가하기 ( routes/api.php )

Route :: post ( 'signup' , 'AuthController@register' ) ; // sign up

Route :: post ( 'login' , 'AuthController@login' ) ; // login

Route :: group ( [ 'middleware' = > 'jwt.auth' ] , function ( ) { Route :: post ( 'auth/logout' , 'AuthController@logout' ) ; // logout } ) ; Route :: middleware ( 'jwt.refresh' ) -> get ( '/token/refresh' , 'AuthController@refresh' ) ; // refresh token

3. 회원가입 리퀘스트 생성

$ php artisan make : request RegisterFormRequest

RegisterFormRequest.php 파일에 아래 부분을 추가해주세요

class RegisterFormRequest extends FormRequest { public function authorize ( ) { return true ; } public function rules ( ) { return [ 'name' = > 'required|string|unique:users' , 'email' = > 'required|email|unique:users' , 'password' = > 'required|string|min:6|max:10' , ] ; } }

4. AuthController.php 를 구현해줍니다. // sign up public function register(RegisterFormRequest $request) { $user = new User; $user->email = $request->email; $user->name = $request->name; $user->password = bcrypt($request->password); $user->save(); return response([ 'status' => 'success', 'data' => $user ], 200); }

// login public function login(Request $request) { $credentials = $request->only('email', 'password'); if ( ! $token = JWTAuth::attempt($credentials)) { return response([ 'status' => 'error', 'error' => 'invalid.credentials', 'msg' => 'Invalid Credentials.' ], 400); } return response([ 'status' => 'success', 'token' => $token ]); }

// user data public function user(Request $request) { $user = User::find(Auth::user()->id); return response([ 'status' => 'success', 'data' => $user ]); }

// logout public function logout() { JWTAuth::invalidate(); return response([ 'status' => 'success', 'msg' => 'Logged out Successfully.' ], 200); }

// refresh token public function refresh() { return response([ 'status' => 'success' ]); }

이렇게까지 하면 기본적인 JWT API 까지 생성이 되었습니다.

확인은 Postman 을 통해서 간단하게 테스트 해보실 수 있어요.

from http://foolgenius.tistory.com/36 by ccl(A) rewrite - 2020-03-06 15:20:59

댓글

이 블로그의 인기 게시물

[PHP] 라라벨 루멘 DB문서 자동화

laravel-1 라우트 & 뷰

PHP 라라벨프레임워크 설치하기 in CentOS 7