首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用圣殿的SPA认证失败,这条错误信息是:“未经认证”。

使用圣殿的SPA认证失败,这条错误信息是:“未经认证”。
EN

Stack Overflow用户
提问于 2021-03-19 14:37:04
回答 1查看 2.1K关注 0票数 4

我正在用Vuejs和Laravel建造SPA,我安装了laravel密室来验证用户的令牌。

Api.php

代码语言:javascript
复制
Route::post('/teacher/login', 'Teacher\RegisterController@login')->middleware('auth:sanctum');

Login.Vue

代码语言:javascript
复制
login(){
            axios.get('/sanctum/csrf-cookie').then(response => {
                this.form.post('api/teacher/login')
                .then( response => {
                    console.log( response );
                })
                .catch( error => {
                    console.log( error );
                })
            });
        }

自定义控制器

代码语言:javascript
复制
public function login(Request $request){

$credentials = $request->only('email', 'password');

        if(Auth::attempt($credentials)){
            return response()->json(Auth::user(), 200);
        }
}

我在没有加密中间件的情况下对此进行了检查--它成功地记录了用户的日志,但是我在路由中添加了中间件,它说您的请求未经身份验证。我按照官方的Laravel-7文档实现了一切,我不知道为什么它说未经认证,附加IMG以获得更多细节。

EN

回答 1

Stack Overflow用户

发布于 2021-04-12 03:42:23

确保从csrf-cookie获得的XSRF令牌或XSRF令牌被附加到api/teacher/login的header中。对于Axios,您可以用

代码语言:javascript
复制
axios.defaults.headers.common['X-XSRF-TOKEN'] = <the x-xsrf-token from csrf-cookie request>

确保用端口号在SANCTUM_STATEFUL_DOMAINS中声明.env。您也可以包含多个域。SANCTUM_STATEFUL_DOMAINS='your-domain.test:8080,本地主机:8000‘

如果不这样做,您将遇到Session store not set问题,因为中间件EnsureFrontendRequestsAreStateful正在检查请求是否来自前端。如果它是正面的,那么它会在上面附加以下的中间件。

  • EncryptCookies
  • StartSession
  • VerifyCsrfToken
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66710206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档