美文网首页
Laravel 5.4 + Dingo/API + JwtAut

Laravel 5.4 + Dingo/API + JwtAut

作者: 李颖轩_LiYingxuan | 来源:发表于2017-06-22 17:20 被阅读2159次

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

    相关文章

      网友评论

          本文标题:Laravel 5.4 + Dingo/API + JwtAut

          本文链接:https://www.haomeiwen.com/subject/ogvfcxtx.html