2017-08-24 33 views
3

我想在我的應用程序的調用api認證實施passport。我已經完成了官方文檔中提到的配置。 我有這個在我的身份驗證後衛:Laravel護照:AUTH:API行爲就像AUTH:網絡

'api' => [ 
      'driver' => 'passport', 
      'provider' => 'users', 
     ], 

而且,這在我的AuthServiceProvider'sboot()方法:

Passport::routes(); 

這是route我試圖訪問:

Route::middleware('auth:api')->get('/user', function (Request $request) { 
    return $request->user(); 
}); 

Route::group(['namespace' => 'Api', 'middleware' => 'auth:api'], function() { 
    // Login Controller 
    Route::get('/getclc', '[email protected]'); 
}); 

我正在發送header這樣的請求:

Authorization:Bearer $accessToken 

我的問題是:1.當請求受保護的路由時,它會將我發送到登錄頁面,但我希望它返回401.我該怎麼做?

laravel的版本是33年4月5日。

+0

你能告訴我們所有的路線嗎? –

+0

@AntonisTsimourtos我用所有的路線更新了我的問題。請看一看。 – Saani

+0

那麼錯誤顯然意味着「登錄」路線沒有定義。你可以嘗試運行'php artisan make:auth' [腳手架需要的認證頁面](https://laravel.com/docs/5.4/authentication)。然後你可以嘗試使用'php artisan clear:cache' –

回答

4

如果驗證失敗,Laravel拋出AuthenticationException例外。這個異常由Laravel異常處理程序處理,並最終在app/Exceptions/Handler.php文件中調用unauthenticated()方法。

你可以從方法看,如果您的請求需要一個JSON響應,你會得到一個401未認證的響應。但是,如果您不期待JSON響應,它只會重定向到名爲「login」的路由。如果你沒有名爲「login」的路由,這顯然會失敗。

您的要求「expectsJson」當你發送無論是「X-請求 - 由於:XMLHttpRequest的」頭或「接受:應用/ JSON的」頭。否則,它被視爲正常的網絡請求。

如果你想改變你的應用程序如何處理未經授權的用戶,該unauthenticated()方法是改變之一。