Laravel 5.4 + Dingo/API + JwtAut

2017-06-22  本文已影响2159人  李颖轩_LiYingxuan

为了把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的。

上一篇下一篇

猜你喜欢

热点阅读