私は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');
});
}
第二に、私はapi
にconfig/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応答ではありません。なぜ誰かが私に言うことができますか?