自定义 laravel sanctum 未授权响应
Posted
技术标签:
【中文标题】自定义 laravel sanctum 未授权响应【英文标题】:Customize laravel sanctum unauthorize response 【发布时间】:2021-10-01 14:11:01 【问题描述】:我在我的项目中使用 laravel sanctum,但我遇到了一个问题。我想自定义 401 响应代码(未经授权)以在令牌无效时返回 JSON,如下所示:
"data":
"code": 401,
"book": null,
"success": false,
"error":
"message": "Not authenticated"
而不是默认响应:
"message": "Unauthenticated."
如何在 laravel sanctum 中实现这一点?提前致谢。
【问题讨论】:
【参考方案1】:Rendering exceptions
添加到ExceptionHandler@register
app/Exceptions/ExceptionHandler.php
$this->renderable(function (\Illuminate\Auth\AuthenticationException $e, $request)
if ($request->is('api/*'))
return response()->json([
'message' => 'Not authenticated'
], 401);
);
【讨论】:
【参考方案2】:您可以覆盖 Authenticate.php 中间件以输出您想要的消息或捕获 AuthorizationException 以在 Exception/Handler 中显示您想要的消息
public function render($request, Exception $exception)
if ($exception instanceof AuthorizationException)
return response()->json([
'message' => 'Not authenticated'
],401);
return parent::render($request, $exception);
【讨论】:
渲染函数放在哪里? 我认为他的意思是app/Http/Middleware/Authenticate.php
以上是关于自定义 laravel sanctum 未授权响应的主要内容,如果未能解决你的问题,请参考以下文章
带有 laravel sanctum 的 Nuxt 收到“未验证”消息
使用 nuxtjs 登录 laravel sanctum 后出现 401(未验证)错误
使用 laravel Sanctum 和 api 令牌身份验证获取用户时出现 401(未经授权)[重复]