【发布时间】:2019-09-29 20:08:24
【问题描述】:
我正在尝试使用 Laravel 创建 REST API。我正在使用 JWT (Tymon\JWTAuth) 对用户进行身份验证。
这是我的 api.php 文件的一部分,其中包含 /api 路由:
Route::middleware('auth:api')->get("match/{id}", "ApiMatchController@getMatch");
Route::middleware('auth:api')->put("match/{id}", "ApiMatchController@editMatch");
现在,我正在向 /api/match/7 发送 GET 请求。授权用户按预期获取匹配详细信息。未经授权的用户被重定向到根 url / 但我希望用户留在该 url 上,我只想返回 HTTP 代码 401 - 未经授权。我在哪里可以改变这个?我可以在 ApiMatchController@getMatch 方法中执行此操作,但我希望中间件 auth:api 为我执行此操作。有没有办法做到这一点?
然后,我向/api/match/7 发送带有一些数据的 PUT 请求。来自授权用户的请求工作正常,但未经授权的用户现在得到 HTTP 代码 405 - 方法不允许(带有调试信息:Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException: The PUT method is not supported for this route. Supported methods: GET, HEAD.)。为什么?我清除了路由缓存,如您所见,在 api.php 中有一个已定义的路由。这种行为实际上只发生在未经授权的用户身上。
【问题讨论】:
-
它是否出现在
php artisan route:list -
是的,确实如此。
标签: php laravel rest restful-authentication