2016-08-30 111 views
10

我希望有人能解釋爲什麼我unauthenticated已經執行成功的Oauth 2認證過程。護照 - 「未經認證」。 - Laravel 5.3

我已經設置了Passport包,就像在Laravel的文檔中一樣,我成功地獲得認證,接收令牌值等等。但是,當我嘗試執行get請求時,比如說,/api/user,我得到Unauthenticated錯誤作爲響應。正如文檔中所述,我使用標記值作爲標題名稱爲Authorization的標題。

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

此功能是假設給回我自己作爲身份驗證的用戶,但我只得到Unauthenticated。同樣,如果我只是返回第一個用戶,我又會得到Unauthenticated

Route::get('/test', function(Request $request) { 
    return App\User::whereId(1)->first(); 
})->middleware("auth:api"); 

在一個教程從Laracast,通過Passport設置引導,導向器在他的路由->middleware("auth:api")。但如果它不在那裏,那麼根本就不需要認證!

請任何建議或答案更受歡迎!

+0

也許你可以檢查是否要發送「承載<的access_token>」在認證頭 – Urizev

+0

我不是甚至還讓「未」我立即得到重定向到登錄頁面。 –

+0

您在'routes \ api.php'文件中寫入的所有'routes'都是** ** default **受** **中間件**保護的。所以,你可以刪除你明確提到的' - >中間件(「auth:api」)'。 –

回答

0

我有完全相同的錯誤,因爲我忘了把http放在項目名稱之前。

http missing

+2

請複製代碼而不是像這樣 –

3

你必須設置截止日期爲你生成的令牌,

設置在AuthServiceProvider引導方法類似下面的代碼,並嘗試生成一個新的令牌。護照缺省到期返回負數

public function boot() 
{ 
    $this->registerPolicies(); 
    Passport::routes(); 
    Passport::tokensExpireIn(Carbon::now()->addDays(15)); 
    Passport::refreshTokensExpireIn(Carbon::now()->addDays(30)); 
} 
+0

'默認情況下,Passport發出長期存取令牌,永遠不需要刷新。 /laravel.com/docs/5.4/passport#configuration – adamj

1

檢查您的用戶模型和數據庫表,如果你已經修改了主ID字段名說比「ID」以外的東西,甚至是「user_ID的」你可能會遇到的問題。我調試了關於修改我的用戶模型和數據庫表中的主要id字段的問題,以表示「acct_id」而不是將其保留爲「id」,結果爲「Unauthenticated」當我試圖通過GET/user獲取用戶對象時通過auth:api中間件。請記住,我已經嘗試了所有其他修復方案,直到我決定自己調試它。

另請務必更新您的護照。因爲它在最近幾周有所改變。

我會在下面鏈接我的參考資料,它非常詳細,並且對我所做的以及我如何得到解決方案有很好的定義。

享受!

https://github.com/laravel/passport/issues/151