Laravel+JWT 多表(or多使用者)認證

Twilight發表於2019-02-16

最近在用laravel+jwt進行auth認證,剛寫完使用者模組
遇到個問題:馬上要寫後臺模組,而2個模組設計的是2張使用者表:user表和admin表,larvel倒是有多使用者的許可權認證辦法,jwt的沒接觸過
第一時間就去谷歌搜了下關於laravel+jwt多使用者認證的文章,出來的前3個結果不(簡)是(直)很(有)好(毒),特意在這裡給大家介紹個簡單辦法,以免和我一樣白白浪費2個小時-_-!!!

分析:

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

  2. 重新看了下config資料夾下的jwt.php,裡面有個配置項

    `user` => `AppModelsUser`,
    // 這裡在我之前已經安裝的時候已經配置過(原始是`user` => `AppUser`),不過當時造輪子在,沒多想。。
  3. 感覺有戲,修改了下model指向Admin,肯定就訪問了Admin去了,那麼說明我們只需要去在哪裡配置下即可

  4. 沒錯,就是在中介軟體了,在訪問home和admin路由群組的時候,各自新增一個中介軟體,用於指定jwt去訪問不同的model。下面是我寫的中介軟體:

<?php

namespace AppHttpMiddleware;

use Closure;

class AdminChangeMidleware
{
    /**
     * Handle an incoming request.
     *
     * @param  IlluminateHttpRequest  $request
     * @param  Closure  $next
     * @return mixed
     */
     public function handle($request, Closure $next)
     {
         config([`jwt.user` => `AppModelsAdmin`]);    //用於指定特定model
         config([`auth.providers.users.model` => AppModelsAdmin::class]);//就是他們了
         return $next($request);
     }
}

相關文章