Laravel API:每当我添加 auth:api 中间件时,方法就会发生冲突

Posted

技术标签:

【中文标题】Laravel API:每当我添加 auth:api 中间件时,方法就会发生冲突【英文标题】:Laravel API: Method are confliccting whenever i add the auth:api middleware 【发布时间】:2021-02-01 23:48:14 【问题描述】:

每当我使用 POST 请求调用路由时,即使我的路由确实是 POST 请求,我也会一直出现此错误。只有当我尝试将我的路由与auth:api 中间件绑定时才会出现此问题,请帮忙调查一下,如果您让我提供更多信息,请告诉我

Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException:此路由不支持 GET 方法。支持的方法:POST。在文件 /home/kingsleyakindele/projects/secpry_backend_api/vendor/laravel/framework/src/Illuminate/Routing/AbstractRouteCollection.php 第 117 行

这是我的路线

Route::prefix("auth")->group(function () 
Route::post('login', [LoginController::class, 'login'])->name('login');
Route::post('refresh', [LoginController::class, 'handleRefreshToken'])->name('refresh');
Route::post('me', [LoginController::class, 'userDetails'])->name("user_details");
);

这是来自我的控制器

public function __construct()

    $this->middleware("auth:api", ["except" => ["login", "refresh"]]);

只有登录路径可以正常工作,刷新路径和其他路径都不能正常工作。

感谢您的帮助

【问题讨论】:

确保在客户端调用路由为post 方法。 在这些路由中是否发生了任何重定向,例如验证失败重定向? @apokryfos,验证后没有重定向,我只返回一个 json 响应 如果验证失败,验证本身会导致重定向,除非请求的标头中有“Accept: application/json” @apokryfos,谢谢它解决了它,但现在,我仍然遇到这样的问题,即使我已经登录,所有 protected(auth:api) 路由仍然返回未通过身份验证的身份验证令牌并且我确定令牌进入 【参考方案1】:

此路由不支持 GET 方法。支持的方法: 发布。

如果您阅读该错误,则表示不支持 get 方法。 您尚未在路由中声明方法 get。

【讨论】:

我应该声明一个 get 方法到一个路由并用一个 post 方法触发路由吗?我不确定我明白你的意思,请解释一下 你提出了一个获取请求,但你只有一个帖子 我发出了一个帖子请求,我也有一个帖子,但问题是 laravel 将其解释为传递了一个获取请求,然后返回该错误

以上是关于Laravel API:每当我添加 auth:api 中间件时,方法就会发生冲突的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 VueJS 和 axios 将从 API 获取的数据填充到 Laravel 中的选择选项中?

Laravel 4:将 where 子句添加到连接条件

Laravel API 推送通知到 Flutter

在注册页面添加验证消息

Laravel 5.4 + Ajax 等于 401 未经身份验证

Nginx添加标头PHP FPM返回错误