laravel jwt不使用默认user模型 使用不同模型验证
假如我们使用的不是App\User.php 模型 而是其他模型如:App\Api\MemberModel.php
当我们使用 JWTAuth::parseToken() -> authenticate();
会报下面的错误
因为jwt会默认读取config/auth/providers/users 这个配置
所以要直接使用JWTAuth::parseToken() -> authenticate();
则需要动态重新配置config/auth/providers/users
所以在需要在调用这个方法之前重新配置,则需要重新创建一个中间件 在调用该中间件之前调用
代码如下
<?php
namespace App\Http\Middleware\Api;
use Closure;
class MemberChangeMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
// 动态更改默认配置
// 把 \App\Models\Store\StoreModel::class 改成你的模型
config(['auth.providers.users.model' => \App\Api\MemberModel::class]);
return $next($request);
}
}
<?php
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel
{
/**
* The application's route middleware.
*
* These middleware may be assigned to groups or used individually.
*
* @var array
*/
protected $routeMiddleware = [
'member_change' => \App\Http\Middleware\Api\MemberChangeMiddleware::class,
'member_login' => \App\Http\Middleware\Api\LoginCheck::class,
];
}
Route::group(['middleware' => ['member_change','member_login']],function(){
//
});
参考链接 :
1、https://learnku.com/articles/10885/full-use-of-jwt#ff18c5
2、https://segmentfault.com/a/1190000011025137