Laravel+VUE,用 session guard 认证 API,解决错误 Session store not set on request.

这种方式会产生很多问题,后来改用 Passport OAuth 认证了,请忽略本文吧。
使用VUE+Laravel开发时,可以使用普通的session guard进行用户认证,具体使用方法如下:
1、axios中添加http header:

axios = require('axios');
axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'
axios.defaults.headers.common['X-CSRF-TOKEN'] = document.head.querySelector(
    'meta[name="csrf-token"]'
).content

2、把session控制器添加到相应的Controll,这时可能会出现这样的错误:
Session store not set on request.
解决这个错误的方法是,把以下代码添加到app/Http/Kernel.php中 api中间件组中:

            \App\Http\Middleware\EncryptCookies::class,          
            \Illuminate\Session\Middleware\StartSession::class,

添加后完整代码如下:

        'api' => [
            \App\Http\Middleware\EncryptCookies::class,          // <------- 添加的代码
            \Illuminate\Session\Middleware\StartSession::class, // <------ 添加的代码
            'throttle:60,1',
            'bindings',
        ],

如果是开发第三方扩展,不想修改app/Http/Kernel.php文件,可以在任何一个ServiceProvider的register()中添加:

    public function register()
    {
        $router = $this->app['router'];
        $router->prependMiddlewareToGroup('api', //<---------添加的代码
            \App\Http\Middleware\EncryptCookies::class
        );
        $router->prependMiddlewareToGroup('api',//<--------添加的代码
            \Illuminate\Session\Middleware\StartSession::class 
        );
    }
本作品采用《CC 协议》,转载必须注明作者和本文链接
附言 1  ·  4年前

这种方式会产生很多问题,后来改用Passport OAuth 认证了

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 2

这种不科学的东西,就不要发了吧!现在还有用这种方式处理的!

4年前 评论

呵呵,是的,谢谢提醒

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!