Laravel 5.2 api路由auth

时间:2017-06-27 03:37:45

标签: laravel-5.2

我正在开发一个带有laravel 5.2.31的项目。我想构建一个api服务,并希望用户api_token来授权用户。所以这是我的步骤:

首先,我在api.php目录中创建app\Http。我修改了App\Providers\RouteServiceProvider

/**
 * Define the routes for the application.
 *
 * @param  \Illuminate\Routing\Router  $router
 * @return void
 */
public function map(Router $router)
{
    $this->mapWebRoutes($router);
    //load api.php routes
    $this->mapApiRoutes($router);
    //
}

/**
 * Define the "web" routes for the application.
 *
 * These routes all receive session state, CSRF protection, etc.
 *
 * @param  \Illuminate\Routing\Router  $router
 * @return void
 */
protected function mapWebRoutes(Router $router)
{
    $router->group([
        'namespace' => $this->namespace, 'middleware' => 'web',
    ], function ($router) {
        require app_path('Http/routes.php');
    });
}

protected function mapApiRoutes(Router $router)
{
    $router->group([
        'namespace' => $this->namespace, 'middleware'=>'api',
    ], function ($router) {
        require app_path('Http/api.php');
    });
}

其次,我将config/auth.php默认保护更改为api

第三,我在我的用户表中添加了api_token列。

最后,我在api.php中定义了一条路线来测试:

Route::get('/test',function(){
    $user = Auth::user();
    return $user;
})->middleware('auth:api');

我发现了一个问题。如果我将api_token作为url参数或header参数传递,并且值正确,如http://localhost/test?api_token=xxxxx,则可以正常工作。但如果在数据库中找不到api_token的匹配值,我将得到404 page not found响应不是422响应。有人可以告诉我为什么?

1 个答案:

答案 0 :(得分:0)

如果您尝试添加一些条件,例如

,它可能会有效
    If(isset($user)){
return $user;
}
return "not found";

可能会解决您的问题。