到目前为止,我将访问令牌存储在本地存储中。现在,我想将其移动到Cookie中。
因此,我将\ Laravel \ Passport \ Http \ Middleware \ CreateFreshApiToken :: class添加到Kernel.php中。我还更改了axios呼叫:
axios.get('/forum', {
params: {
filterBy: vm.filterBy,
filterDirection: vm.filterDirection,
theme: vm.theme
},
withCredentials: true,
headers: {
//'Authorization': 'Bearer ' + this.getToken,
'X-Requested-With': 'XMLHttpRequest',
'X-CSRF-TOKEN':window.Laravel.csrfToken
}
}).then(function (response) {
vm.posts=response.data
}).catch(function (error) {});
您可以看到我在从本地存储发送访问令牌的地方评论了Authorization标头。我看到CSRF令牌已添加到请求标头中,而访问令牌已保存在X-XSRF-TOKEN中。还有一个Cookie,其值为:XSRF-TOKEN :(令牌值)。
现在我遇到以下错误:未定义Route [登录]。
也许问题在于Cookie值中包含XSRF-TOKEN而不是laravel_token吗?
登录api调用
axios.post('/login', {
username: credentials.username,
password: credentials.password,
}).then(response => {
const token = response.data.access_token
localStorage.setItem('access_token', token)
localStorage.setItem('username', credentials.username)
resolve(response)
}).catch(error => {
reject(error)
})
然后在后端,我使用以下命令创建令牌:
$response = $http->post(config('services.passport.login_endpoint'), [
'form_params' => [
'grant_type' => 'password',
'client_id' => config('services.passport.client_id'),
'client_secret' => config('services.passport.client_secret'),
'username' => $request->username,
'password' => $request->password,
]
]);
return json_decode((string) $response->getBody(), true);