2017-06-27 17 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'); 
    }); 
} 

第二に、私はapiconfig/auth.phpデフォルトのガードを変更しました。

第3に、api_token列をユーザーテーブルに追加します。

最後に、私がテストにapi.phpでルートを定義した:

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

そして、私は問題を発見しました。 URLパラメータまたはヘッダーパラメータとしてapi_tokenを渡した場合、値はhttp://localhost/test?api_token=xxxxxのように正しく、正常に動作しますが、データベース内でapi_tokenの一致値が見つからない場合は、404 page not found応答が422応答ではありません。なぜ誰かが私に言うことができますか?

答えて

0

あなたはそれがあなたの問題を解決するかもしれませ

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

のようないくつかの条件を追加しようとするとそれはうまくいくかもしれません。