Laravel+JWT 多表(or多用戶)認證

最近在用laravel+jwt進行auth認證,剛寫完用戶模塊
遇到個問題:立刻要寫後臺模塊,而2個模塊設計的是2張用戶表:user表和admin表,larvel卻是有多用戶的權限認證辦法,jwt的沒接觸過
第一時間就去谷歌搜了下關於laravel+jwt多用戶認證的文章,出來的前3個結果不(簡)是(直)很(有)好(毒),特地在這裏給你們介紹個簡單辦法,以避免和我同樣白白浪費2個小時-_-!!!php

分析:

  1. 谷歌到的辦法(出自laravel china)是:先去更新jwt到1.0 dev版,而後再配置laravel auth.php不一樣的guards,又還要從新發布...思之不對勁~laravel

  2. 從新看了下config文件夾下的jwt.php,裏面有個配置項ide

    'user' => 'App\Models\User',
    // 這裏在我以前已經安裝的時候已經配置過(原始是'user' => 'App\User'),不過當時造輪子在,沒多想。。
  3. 感受有戲,修改了下model指向Admin,確定就訪問了Admin去了,那麼說明咱們只須要去在哪裏配置下便可google

  4. 沒錯,就是在中間件了,在訪問home和admin路由羣組的時候,各自添加一個中間件,用於指定jwt去訪問不一樣的model。下面是我寫的中間件:spa

<?php

namespace App\Http\Middleware;

use Closure;

class AdminChangeMidleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
     public function handle($request, Closure $next)
     {
         config(['jwt.user' => '\App\Models\Admin']);    //用於指定特定model
         config(['auth.providers.users.model' => \App\Models\Admin::class]);//就是他們了
         return $next($request);
     }
}
相關文章
相關標籤/搜索