Axios标头不起作用Laravel和Vue.js

问题描述

我正在使用Laravel的Sanctum库对我的API进行身份验证,但是它无法正常工作,并且一切似乎都是故意的。

我在某人进行身份验证后创建了令牌,该令牌进入数据库personal_access_token表中。然后,将令牌插入Metatag中。然后,我使用认的javascript检索元标记内容(有效),并将其设置为bootstrap.js文件中Axios的全局授权标头。

使用解密的承载令牌时,此方法有效。但是,当我开始在personal_access_token上使用认的 token 列时,它不起作用。

我定义令牌的方式

protected function authenticated(Request $request,$user)
    {
        $user->access_token = $user->createtoken('api-token')->plainTextToken;

        return $request->wantsJson() ? response()->json($user,200) : redirect()->intended('/students');
    }

那很好。有人认证后,它将插入新令牌。

我将令牌设置为元标记内容的方式

<Meta name="access-token" content="{{auth()->user()->tokens()->first()->token}}" />

检查时可以看到令牌,就像这样:fd34a554cc5a6f14004f8728735375f980d81053b97f719be5bd504647d786cf

我将令牌设置为Axios的全局标头的方式

let Metatag = document.querySelector('Meta[name="access-token"]').content;

window.axios = require('axios');

axios.defaults.headers.common['Authorization'] = `Bearer ${Metatag}`;

在我切换到personal_access_table之前没有问题。当我使用6|yqbI...之类的令牌时,这种方法有效。

这现在返回401错误,当我单击该按钮时,我可以在“请求标头”中看到诸如Authorization: Bearer fd34a554cc5a6f14004f8728735375f980d81053b97f719be5bd504647d786cf之类的令牌

解决方法

当我使用散列标记作为全局标头时,我得到了错误。

但是我已将此行添加到.env文件SANCTUM_STATEFUL_DOMAINS=localhost:8000

因为我的本地主机有一个端口,所以我需要在.env文件中手动定义它

该解决方案对我有用。