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 协议》,转载必须注明作者和本文链接
这种方式会产生很多问题,后来改用Passport OAuth 认证了
推荐文章: