最近在用laravel+jwt進行auth認證,剛寫完使用者模組
遇到個問題:馬上要寫後臺模組,而2個模組設計的是2張使用者表:user表和admin表,larvel倒是有多使用者的許可權認證辦法,jwt的沒接觸過
第一時間就去谷歌搜了下關於laravel+jwt多使用者認證的文章,出來的前3個結果不(簡)是(直)很(有)好(毒),特意在這裡給大家介紹個簡單辦法,以免和我一樣白白浪費2個小時-_-!!!
分析:
-
谷歌到的辦法(出自laravel china)是:先去更新jwt到1.0 dev版,然後再配置laravel auth.php不同的guards,又還要重新發布…思之不對勁~
-
重新看了下config資料夾下的
jwt.php
,裡面有個配置項`user` => `AppModelsUser`, // 這裡在我之前已經安裝的時候已經配置過(原始是`user` => `AppUser`),不過當時造輪子在,沒多想。。
-
感覺有戲,修改了下model指向Admin,肯定就訪問了Admin去了,那麼說明我們只需要去在哪裡配置下即可
-
沒錯,就是在中介軟體了,在訪問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);
}
}