gpt4 book ai didi

php - 自定义 Laravel Passport 响应未经身份验证

转载 作者:行者123 更新时间:2023-12-04 01:08:21 24 4
gpt4 key购买 nike

目前,我使用我在 Laravel 中使用护照功能制作的 api 具有登录、注册、更新和删除功能。一切正常,插入数据并使用此 api 从数据库中获取数据。现在我想知道,当 token 过期时,如何自定义api的响应。 token 的到期也工作正常。它会自动显示此消息
{ "message": "Unauthenticated" }
这是路由的代码,它受我的 Oauth token 保护,如果用户没有先登录,则用户未经过身份验证以浏览路由

 Route::middleware('auth:api')->get('/user', function (Request $request){return $request->user();});



Route::post('/timekeeping','Auth\Api\AuthController@timekeeping');

Route::post('/login','Auth\Api\AuthController@login');

Route::middleware('auth:api')->group(function () {Route::post('/timekeeping_app','Auth\Api\AuthController@timekeeping_app');

Route::post('/logout','Auth\Api\AuthController@logout');

Route::post('/register','Auth\Api\AuthController@register');

Route::post('/show_dtr_list','Auth\Api\AuthController@show_dtr_list');

Route::post('/update','Auth\Api\AuthController@update');

Route::post('/delete','Auth\Api\AuthController@delete');

});

然后这就是每当用户成功登录、注册甚至注销他们的帐户时我的响应方式。
return response(['status'=>'oK','message'=>'Successful!']);
我想要的是每次用户使用过期 token 时。 api 应该像这样响应
{ "message": "Token is expired" }
不只是
{ "message": "Unathenticated" }
一些线程讨论说我需要覆盖 laravel 的一些功能,但我不知道我要从哪里开始以及如何开始。

最佳答案

这是我解决它的方法。如果您使用的是 Laravel 5.5 或更高版本,您可以通过编辑 app/Exceptions/Handler.php 来覆盖默认的异常处理程序。添加以下内容:

use Illuminate\Auth\AuthenticationException;

protected function unauthenticated($request, AuthenticationException $exception)
{
if ($request->expectsJson()) {
$json = [
'isAuth'=>false,
'message' => $exception->getMessage()
];
return response()
->json($json, 401);
}
$guard = array_get($exception->guards(),0);
switch ($guard) {
default:
$login = 'login';
break;
}
return redirect()->guest(route($login));
}
在 JSON 返回中,您可以根据需要添加任何参数。

关于php - 自定义 Laravel Passport 响应未经身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56231625/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com