为了把cms和api合并到一个项目里,需要两个用户表,于是趟了各种坑。终于解决了jwt认证换默认用户表的问题。
1、新建中间件
php artisan make:middleware JwtAuthModel
在/app/Http/Middleware/JwtAuthModel.php中填充内容:
<?php
namespace App\Http\Middleware;
use Closure;
class JwtAuthModel
{
public function handle($request, Closure $next)
{
config(['jwt.user' => '\App\Models\Api\User']); //用于重定位model
config(['auth.providers.users.model' => \App\Models\Api\User::class]); //用于重定位model
return $next($request);
}
}
2、配置中间件
在/app/Http/Kernel.php中的
protected $routeMiddleware = [
下增加:
'jwt.api.auth' => \App\Http\Middleware\JwtAuthModel::class, //新增注册的中间件
3、配置路由的中间件
在/routes/api.php
$api = app('Dingo\Api\Routing\Router');
$api->version('v1', function ($api) {
$api->group(['namespace' => 'App\Api\Controllers', 'middleware' => ['jwt.api.auth']], function ($api) {
/**
* Register & Login
*/
$api->post('login', 'AuthController@authenticate');
/**
* Token Auth
*/
$api->group(['middleware' => 'jwt.auth'], function ($api) {
// Init
$api->group(['prefix' => 'init'], function ($api) {
$api->get('/', 'InitController@index');
});
});
});
});
重点是第三行的(其他是示例代码):
'middleware' => ['jwt.api.auth']
4、End
搞定了,现在api访问的用户表就是中间件中config的。
网友评论