【问题标题】:Laravel 5.2 api routes authLaravel 5.2 api 路由认证
【发布时间】: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


    【解决方案1】:

    如果你尝试添加一些条件,它可能会起作用

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

    也许它会解决你的问题。

    【讨论】:

      猜你喜欢
      • 2016-06-24
      • 2015-07-31
      • 2017-01-08
      • 2017-11-26
      • 2016-08-30
      • 2016-12-01
      • 1970-01-01
      • 2016-09-21
      • 2016-06-23
      相关资源
      最近更新 更多