2017-06-27 92 views
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響應。有人可以告訴我爲什麼?

回答

0

,如果你嘗試加入一些條件像

If(isset($user)){ 
return $user; 
} 
return "not found"; 

可能會解決您的問題,這可能會奏效。