Laravel api 路由授权

Laravel api routes with auth

我正在尝试创建一个 api 路由,只有发出请求的用户已登录才能访问。这是我 routes/api.php 中的内容,但它 returns {"error":"Unauthenticated."}

Route::group(['middleware' => ['auth:api'], function () {
    Route::post('schedules', ['uses' => 'Api\ScheduleController@store']);
});

如果没有 laravel 护照,可以这样做吗?如何做?我只需要登录用户在应用程序内使用的路由。

我假设提到的登录是在 "web" 上使用 "session" 作为 driver。

您遇到此问题是因为 "web" 和 "api" 守卫使用不同的 driver 进行身份验证。看看config/auth.php。 "api" 守卫使用 "token" 作为默认值 driver。

因此,您遇到这种情况的选择很少。

  1. 在 web.php 中移动 "schedules" 的路线。不用担心,如果未通过身份验证,您的 ajax 将失败。但是,请注意,任何涉及 POST 方法的内容都需要 csrf_token 参数),除非您使用 laravel axios
  2. 使用使用 api 的身份验证,您也可以参考 this tutorial for "token" driver 并且您所有的安全路由都将在其 中使用令牌身份验证 header