带有身份验证的 Laravel api 路由

Posted

技术标签:

【中文标题】带有身份验证的 Laravel api 路由【英文标题】:Laravel api routes with auth 【发布时间】:2017-12-05 07:51:27 【问题描述】:

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

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

这可以在没有 laravel 护照的情况下完成吗?怎么做?我只需要登录用户在应用内使用的路由。

【问题讨论】:

【参考方案1】:

我假设提到的登录是在使用“会话”作为驱动程序的“网络”上。

您遇到此问题是因为“web”和“api”防护使用不同的驱动程序进行身份验证。看看config/auth.php。 “api”守卫使用“token”作为它的默认驱动程序。

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

    在 web.php 中移动“时间表”的路线。不用担心,如果未通过身份验证,您的 ajax 将失败。但是,请注意,任何涉及 POST 方法的内容都需要 csrf_token 参数),除非您使用的是 laravel axios 使用 api 进行身份验证,您也可以参考 this tutorial 获取“令牌”驱动程序,您的所有安全路由都将在其 Authentication 标头中使用令牌

【讨论】:

我最终使用了JWT,但我想这回答了问题(需要实现令牌驱动程序)。奇怪的是,Laravel 如何在 config/auth.php guards->api 中将 token 作为默认驱动程序,但文档中甚至没有关于如何使用它的 1 个字。

以上是关于带有身份验证的 Laravel api 路由的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.3 + Passport:总是未经身份验证的错误

Laravel + React,使用 Laravel 身份验证的 api

在 Laravel 中使用无需身份验证的 api 路由

Web 和 Api 路由的 Laravel 身份验证问题

Laravel 在所有 api 路由中使用 Web 身份验证重定向到主页

内部请求需要 Laravel Dingo 身份验证 JWT