[Laravel] jwt-auth (JSON WEB TOKEN)
jwt-auth
라라벨용 Json Web Token package
Install via composer
composer require tymon/jwt-auth
Publish the config
아래의 명령어를 주면 config/jwt.php 파일이 copy 된다.
php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider"
- jwt.php
환경에 맞게 수정
'ttl' => env('JWT_TTL', 60), // jwt live 시간인데 분으로 제공된다.(60분)
- .evn
jwt.php 파일보다는 .env 파일에서 수정할 것을 추천드립니다.
JWT_TTL=43200
JWT_REFRESH_TTL=
route
// token validation
Route::get('token-validataion', function(){
try {
$token = JWTAuth::getToken();
$check = JWTAuth::check(); // JWTAuth::getToken()을 정의해 주어야 됨 true or false
if ($check === true) {
return Response::json(['error' => false, 'check'=>$check], 200);
} else {
return Response::json(['error' => 'Invalid Token', 'check'=>$check], 200);
}
} catch(Exception $e) {
return Response::json(['error' => 'Invalid Token', 'message'=>$e->getMessage()], 200);
}
});
// token refresh
Route::get('token-refresh', function(){
// return Response::json(['result'=>true, 'userToken' => $userToken, 'user'=>['name'=>$user->name, 'email'=>$user->email]], 200);//500, 203
try {
$token = JWTAuth::getToken();
$refreshedToken = JWTAuth::refresh($token);
return Response::json(['error' => false, 'userToken' => $refreshedToken, 'token'=>$token], 200);
} catch(Exception $e) {
return Response::json(['error' => 'Invalid Session', 'token'=>$token], 200);
}
});
// Middelware로 사용하기
Route::post('/path', array('uses'=>'ApiController@store'))->middleware('jwt-auth');
// group으로 사용하기
Route::group(['prefix' => 'v1', 'namespace' => 'App\Http\Controllers', 'middleware'=>'jwt-auth' ], function () {
Route::post('/path', array('uses'=>'ApiController@store'))
});
Controller에서 auth 받기
// $request를 이용하여 바로 전달 받기
public function store(Request $request) {
$user = $request->user();
}