如何解决Laravel Sanctum and Vue-未经验证
我现在遵循两种独立的方法在Laravel 7 / Vue SPA中使用Laravel Sanctum进行身份验证。两者都遇到了相同的问题。方法如下:
https://blog.codecourse.com/setting-up-laravel-sanctum-airlock-for-spa-authentication-with-vue/
https://dev.to/aschmelyun/authenticating-a-vue-spa-is-easy-with-laravel-sanctum-392a
两者都做同样的事情-安装Sanctum,安装标准auth脚手架,设置中间件,添加一个或两个虚拟用户。然后,使用Axios依次点击sanctum/csrf-cookie
路由和/login
路由,并输入电子邮件和密码。
但是,使用这两种方法,我都会遇到相同的问题-401“未经身份验证”错误。浏览器开发工具的“网络”选项卡显示sanctum/csrf-cookie route
返回204,并且设置了Laravel会话和XSRF cookie。 login
路由显示302,并重定向到/ home,这是标准的Laravel auth重定向。然后,当它到达api.php文件中定义的路由时:
Route::middleware('auth:sanctum')->get('/user',function (Request $request) {
return $request->user();
});
它返回401-未经身份验证。
现在,使这项工作按预期进行的唯一事情是调整RouteServiceProvider.php中的mapApiRoutes()函数:
protected function mapApiRoutes()
{
Route::prefix('api')
->middleware('api')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
}
将中间件属性从“ api”更改为“ web”可解决此问题。但这似乎是一个完整的难题,而且我不需要做。
我遵循了两种方法,两种情况下所有域,中间件等的设置都完全相同。
有什么想法吗?
解决方法
Laravel api
卫队基于令牌而不是会话进行工作。看来您已经设置了三个防护装置:web
,api
和sanctum
。可能是您在登录web
或api
的同时仍然需要通过sanctum
保护装置进行身份验证吗?
我遇到了同样的问题,但是当我更换
->middleware('api')
与 ->middleware('web')
成功了!!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。