带有身份验证的 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