最近在用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' => 'App\Models\User', // 这里在我之前已经安装的时候已经配置过(原始是'user' => 'App\User'),不过当时造轮子在,没多想。。
感觉有戏,修改了下model指向Admin,肯定就访问了Admin去了,那么说明我们只需要去在哪里配置下即可
没错,就是在中间件了,在访问home和admin路由群组的时候,各自添加一个中间件,用于指定jwt去访问不同的model。下面是我写的中间件:
<?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);
}
}