我目前有2台服务器:1台Laravel后端/ API服务器,1台运行Vue SPA的前端服务器。
我遇到的问题是身份验证问题。从我的Vue应用程序中,我可以使用密码授权通过API身份验证成功登录。
axios请求将命中auth端点,该端点将:
$response = $http->post(env('APP_URL').'/oauth/token', [
'form_params' => [
'grant_type' => 'password',
'client_id' => $client->id,
'client_secret' => $client->secret,
'username' => $credentials['email'],
'password' => $credentials['password'],
'scope' => '',
],
]);
作为回报,我收到了存储在localStorage中的令牌。在我的Vue应用程序的后续步骤中,我正在尝试使用我从密码授予中收到的令牌为该登录用户发出另一个API请求。
let config = {
headers: {'Authorization': "Bearer " + state.tokens.access_token}
};
window.axios.post('/purchases', {
form: state.form,
}, config)
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error.response);
});
但我收到401错误
错误:“未经身份验证。”
我假设auth:api
中间件会将访问令牌解析给用户,但似乎没有。
如何解析用户,一旦我的/purchases
端点被点击,我就可以访问用户$request->user()
了?
答案 0 :(得分:2)
你好克里斯有2路
方法1
router.beforeEach((to, from, next) => {
axios.defaults.headers.common['authorization'] =store.state.userStore.authUser //this is globaly defind header
//put your login over here
}
});
在这个我设置每个请求的axios标题
方法2
在您的网址中传递您的令牌 假设你的网址是localhost / laravel / public / api / anyname?access_token =' + localstoragevalue