【发布时间】:2017-06-27 03:37:45
【问题描述】:
我正在使用 laravel 5.2.31 开发一个项目。我想构建一个 api 服务,并希望将api_token 用户身份验证用户。所以这是我的步骤:
首先,我在app\Http目录中创建一个api.php。并且我修改了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 参数或标头参数传递并且值正确,例如 http://localhost/test?api_token=xxxxx,它工作正常。但是如果在数据库中找不到 api_token 的匹配值,我将得到 404 page not found 响应而不是 422 响应.谁能告诉我为什么?
【问题讨论】:
标签: laravel-5.2