2017-02-03 23 views
2

Я следовал руководство здесь: https://laravel.com/docs/5.4/passport#consuming-your-api-with-javascriptLaravel 5,4 паспорт Вардар всегда возвращает прошедшему проверку подлинности

Использование AXIOS:

... 
mounted: function() { 

      axios.get('/api/user') 
       .then(function (response) { 
        console.log(response) 
       }) 
       .catch(function (response) { 
        console.error(response); 
       }); 
     }, 

Но ответ всегда неаутентифицированное, я проверяю, если laravel_token печенье присутствует и это:

enter image description here

Я бегу на apache2 (докер)

---- Обновление -

После отладки, его на самом деле XSRF то будет лексемы неудачи в этом методе в TokenGuard:

/** 
    * Authenticate the incoming request via the token cookie. 
    * 
    * @param Request $request 
    * @return mixed 
    */ 
    protected function authenticateViaCookie($request) 
    { 

     try { 
      $token = $this->decodeJwtTokenCookie($request); 
     } catch (Exception $e) { 
      return; 
     } 

     # This is not passing: 
     if (! $this->validCsrf($token, $request) || 
      time() >= $token['expiry']) { 
      return; 
     } 


     if ($user = $this->provider->retrieveById($token['sub'])) { 
      return $user->withAccessToken(new TransientToken); 
     } 
    } 

У меня есть соответствующие настройки в boostrap.js:

window.axios = require('axios'); 

window.axios.defaults.headers.common = { 
    'X-Requested-With': 'XMLHttpRequest' 
}; 
+0

У меня был аналогичный вопрос. Посмотрите, можете ли вы найти ответ http://stackoverflow.com/questions/39228194/passport-unauthenticated-laravel-5-3 –

+0

@RikardOlsson обновлен –

ответ

5

Это на самом деле проблема с Laravel/documentation.

Паспорт маркер охранник ищет X-CSRF-TOKEN, но axios посылает X-XSRF-TOKEN. Изменение конфигурации AXIOS на:

window.axios.defaults.headers.common = { 
    'X-CSRF-TOKEN': window.Laravel.csrfToken, 
    'X-Requested-With': 'XMLHttpRequest' 
}; 

Я открыт PR, и это должно быть по умолчанию в будущих версиях Laravel.

+0

Где находится window.Laravel.csrfToken? – user3098538

+0

@ user3098538 он должен быть в вашем представлении /resources/views/layouts/app.blade.php внутри тега заголовка. – marcovega