2017-02-03 86 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 cookie的存在它是:

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 /文檔問題。

護照令牌警衛正在尋找X-CSRF-TOKEN,但是axios發送X-XSRF-TOKEN。改變你的愛可信的配置是:

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

我已經打開了PR,這應該是默認在未來Laravel版本。

+0

哪裏是window.Laravel.csrfToken? – user3098538

+0

@ user3098538它應該位於head標籤內的/resources/views/layouts/app.blade.php視圖中。 – marcovega