处理控制器中的请求数据会导致工匠错误

时间:2015-10-13 15:19:30

标签: php laravel laravel-5

我有控制器负责处理API请求。在每个构造函数中,我使用JWTAuth类,如下所示:

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

当我运行php artisan route:list命令时,我收到一条JWT无法解析令牌的错误。显然,使用CLI命令时我没有会话数据。

当我在构造函数中使用session时,我也会遇到类似的错误。

有没有办法避免工匠错误,因为它看起来很不方便:我想在构造函数中使用一些属性,但如果它们依赖于请求数据我也不能。

2 个答案:

答案 0 :(得分:1)

处理它的最佳方法是检查应用程序是否未在cli中运行。你可以通过\App::runningInConsole()来做到这一点。所以在你的构造函数中做(最简单的方法)

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

但我建议你把它移到一个抽象的ApiController或服务,甚至是帮助器,以免每次都复制/过去。

答案 1 :(得分:-1)

先验证用户。

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

这也适用于API内部的验证,因为使用API​​的人可能会遇到类似的错误。