[Laravel] jwt-auth (JSON WEB TOKEN)

[Laravel] jwt-auth (JSON WEB TOKEN) updated_at: 2024-02-14 14:04

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();
}
평점을 남겨주세요
평점 : 5.0
총 투표수 : 1

질문 및 답글