首页 > 解决方案 > 具有护照验证和错误处理的 API

问题描述

我在验证请求时遇到了一些问题,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);
    }

与使用 Postman 或其他工具相比,我在没有令牌的情况下添加了我的路由,如果不包含令牌,则给我一条 json 错误消息。但是 insted 给了我这个错误:

InvalidArgumentException
Route [login] not defined.

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

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

'expectsJson' 给了我错误的地方。我该如何解决这个问题?我在网上看到的许多示例都告诉覆盖请求库或评论返回路由登录,但这对我来说不是一个解决方案,因为在我的情况下,我在同一个应用程序中拥有我的移动应用程序与之通信的 API 路由,然后我有用于管理信息的 Web 后端。

有人可以建议我如何解决这个问题吗?

标签: laravellaravel-5laravel-passport

解决方案


推荐阅读