2015-10-13 29 views
2

我有控制器,其負責處理API請求。在每個constructior我用JWTAuth類是這樣的:與請求數據在控制器處理導致人員錯誤

public function __construct() 
{ 
    $this->authenticatedUser = JWTAuth::parseToken()->authenticate(); 
} 

當我運行php artisan route:list命令我得到了一個錯誤,智威湯遜無法解析令牌。很明顯,我使用CLI命令時沒有會話數據。

也出現了類似的錯誤,當我使用的內部構造會話。

有什麼辦法避免工匠錯誤,因爲它看起來不方便:我想用內部構造一些特性,但我不能,如果他們依賴於請求數據。

回答

1

對付它的最好方法是檢查應用程序未在CLI上運行。喲可以通過\App::runningInConsole()來完成。因此,在你的構造做(最簡單的方法)

if (! \App::runningInConsole()) { 
    $this->authenticatedUser = JWTAuth::parseToken()->authenticate(); 
} 

但我會建議你到這個以不可複製/過去每次都移動到一個抽象的ApiController或服務,甚至幫助。

-1

第一驗證用戶。

if (!$this->authenticatedUser = JWTAuth::parseToken()->authenticate()) { 
     return response()->json(['message' => 'Not found'], 404); 
    } 

這對於API內部的驗證也很好,因爲使用API​​的人可能會得到類似的錯誤。