2015-10-13 25 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​​的人可能会得到类似的错误。