0
我正在用laravel 5.2.31開發一個項目。我想構建一個api服務,並且想要用戶api_token
授權用戶。所以這裏是我的步驟:Laravel 5.2 api routes auth
首先,我在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響應。有人可以告訴我爲什麼?