13

最近在用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' => 'App\Models\User',
    // 这里在我之前已经安装的时候已经配置过(原始是'user' => 'App\User'),不过当时造轮子在,没多想。。
  3. 感觉有戏,修改了下model指向Admin,肯定就访问了Admin去了,那么说明我们只需要去在哪里配置下即可

  4. 没错,就是在中间件了,在访问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);
     }
}

Twilight
992 声望19 粉丝

不开心,揍世界([链接])