Laravel Passport API с использованием Javascript - PullRequest
0 голосов
/ 10 февраля 2019

До сих пор я хранил токен доступа в локальном хранилище.Теперь я хочу переместить его в файлы 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);
...