До сих пор я хранил токен доступа в локальном хранилище.Теперь я хочу переместить его в файлы 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) {});
Вы можете видеть, что я прокомментировал заголовок авторизации, куда я отправлял токен доступа из локального хранилища.Я вижу, что токен CSRF добавляется в заголовок запроса, и этот токен доступа сохраняется в X-XSRF-TOKEN.Существует также Cookie со значением: XSRF-TOKEN: (значение токена).
Теперь я получаю сообщение об ошибке с: Route [login] не определено.
Возможно, проблема в том, что в значении Cookieесть XSRF-TOKEN вместо laravel_token?
Вход в систему api call
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);