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。
因此,您遇到这种情况的选择很少。
- 在 web.php 中移动 "schedules" 的路线。不用担心,如果未通过身份验证,您的 ajax 将失败。但是,请注意,任何涉及 POST 方法的内容都需要 csrf(
_token
参数),除非您使用 laravel axios
- 使用使用 api 的身份验证,您也可以参考 this tutorial for "token" driver 并且您所有的安全路由都将在其 中使用令牌身份验证 header
我正在尝试创建一个 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。
因此,您遇到这种情况的选择很少。
- 在 web.php 中移动 "schedules" 的路线。不用担心,如果未通过身份验证,您的 ajax 将失败。但是,请注意,任何涉及 POST 方法的内容都需要 csrf(
_token
参数),除非您使用 laravel axios - 使用使用 api 的身份验证,您也可以参考 this tutorial for "token" driver 并且您所有的安全路由都将在其 中使用令牌身份验证 header