php composer require tymon/jwt-auth 0.5.*設定
安裝完成後,需要在配置/ app.php中註冊相應的服務提供者:
- 'providers' => [
- ...,
- Tymon\JWTAuth\Providers\JWTAuthServiceProvider::class
- ]
- 'aliases' => [
- ...,
- 'JWTAuth' => Tymon\JWTAuth\Facades\JWTAuth::class,
- 'JWTFactory' => Tymon\JWTAuth\Facades\JWTFactory::class
- composer require tymon/jwt-auth 0.5.*]
php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\JWTAuthServiceProvider"
php artisan jwt:generateapp\Http\Kernel.php
- protected $routeMiddleware = [
- ...,
- 'jwt.auth' => \Tymon\JWTAuth\Middleware\GetUserFromToken::class,
- 'jwt.refresh' => \Tymon\JWTAuth\Middleware\RefreshToken::class
- ];
- Route::group(['prefix' => 'api'], function()
- {
- Route::get('auth', 'AuthController@index');
- Route::post('auth', 'AuthController@auth');
- });
建立controller artisan make:controller AuthController
- <?php
- namespace App\Http\Controllers;
- use Illuminate\Http\Request;
- use App\Http\Requests;
- use Auth;
- use JWTAuth;
- class AuthController extends Controller
- {
- public function auth(Request $request)
- {
- $credentials = $request->only('email', 'password');
- try {
- if (! $token = JWTAuth::attempt($credentials)) {
- return response()->json(['error' => 'invalid_credentials'], 401);
- }
- } catch (JWTException $e) {
- return response()->json(['error' => 'could_not_create_token'], 500);
- }
- return response()->json(compact('token'));
- }
- public function __construct()
- {
- $this->middleware('jwt.auth', ['except' => ['auth']]);
- }
- public function index()
- {
- return response()->json(Auth::user()->all());
- }
- }
Laravel - CSRF token禁用方法
打開文件:app\Http\Middleware\VerifyCsrfToken.php
protected $except = [ 'api/*', 'http://loaclhost/foo/bar', ];
在config/jwt.php中,你可以配置以下選項:
ttl:token有效期(分鐘)
refresh_ttl:刷新token時間(分鐘)
algo:token簽名算法
user:指向User模型的命名空間路徑
identifier:用於從token的sub中獲取用戶
require_claims:必須出現在token的payload中的選項,否則會拋出TokenInvalidException異常
blacklist_enabled:如果該選項被設置為false,那麼我們將不能廢止token,即使我們刷新了token,前一個token仍然有效
providers:完成各種任務的具體實現,如果需要的話你可以重寫他們
User —— providers.user:基於sub獲取用戶的實現
JWT —— providers.jwt:加密/解密token
Authentication —— providers.auth:通過證書/ID獲取認證用戶
Storage —— providers.storage:存儲token直到它們失效
沒有留言:
張貼留言