具有Passport验证和错误处理的API

时间:2018-12-19 17:22:20

标签: laravel laravel-5 laravel-passport

在验证请求方面遇到一些问题,laravel Route api.php的行为类似于Route web.php。

我的api路线是:

Route::post('login', 'PassportController@login');
Route::post('register', 'PassportController@register');

Route::middleware('auth:api')->group(function () {
    //USERS
    Route::get('get-details', 'UserController@getDetails');
});

我配置的所有好的护照都有文档告诉我,并且可以正常工作,但是现在我正在测试我的请求,其中不包含用于验证和错误处理的令牌。

我的路线:

 http://localhost:8000/api/get-details

我的用户控制器:

 public function getDetails()
    {

        if(!Auth::check())
        {
            return response()->json(['error' => 'UnAuthorised'], 401);
        }
        //Get Auth User
        $user = Auth::user();

        //Return 404 if user not found
         if(is_null($user)){
             return response()->json(null,404);
         }
         return response()->json($user, 200);
    }

比起使用邮递员或其他工具,我在没有标记的情况下添加了我的路由,如果没有包含标记,则给我一个json错误消息。但是insted给了我这个错误:

InvalidArgumentException
Route [login] not defined.

我注意到问题出在Midleware Authenticate.php中:

 protected function redirectTo($request)
    {
        if (! $request->expectsJson()) {
            return route('login');
        }
    }

“ expectsJson”在给我错误的地方。我该如何解决该问题?我在网上看到的许多示例都说明了过度使用Request库或注释了返回路线登录,但这对我来说不是一个解决方案,因为在我的情况下,我在同一个App中拥有与我的移动应用进行通信的API路由,一个Web后端来管理信息。

有人可以建议我解决该问题吗?

0 个答案:

没有答案