gpt4 book ai didi

php - Laravel token 签名无法验证

转载 作者:行者123 更新时间:2023-12-04 15:54:23 32 4
gpt4 key购买 nike

我使用 Laravel/Lumen 作为 Web 应用程序后端的 API,但遇到了问题。

在一个示例中,我有一条不需要对用户进行身份验证的路由。但我确实想检查路由 Controller 如果访问的用户拥有有效的 token 。

所以我写了以下内容:

    if ($tokenFetch = JWTAuth::parseToken()->authenticate()) {
$token = str_replace("Bearer ", "", $request->header('Authorization'));
} else {
$token = '';
}

我相信上面的内容将检查承载 token 是否有效,否则它将返回一个空白变量。

以下是我的整个 Controller 。

public function show($url, Request $request)
{

if ($tokenFetch = JWTAuth::parseToken()->authenticate()) {
$token = str_replace("Bearer ", "", $request->header('Authorization'));
} else {
$token = 'book';
}
return response()->json(['token' => $token]);
}

问题

如果我传入有效的 token 持有者,它会返回 token 但是如果我传入无效的 token ,则会收到以下错误:

TokenInvalidException in NamshiAdapter.php line 62:

Token Signature could not be verified.

如果我根本不传递 token :

JWTException in JWTAuth.php line 195:

The token could not be parsed from the request

有没有一种方法可以检查 token 是否已通过,如果已通过,则检查其是否有效,如果尚未通过,则返回空白返回?

最佳答案

您可以将其包装在 try/catch block 内

public function show($url, Request $request)
{
try {
$tokenFetch = JWTAuth::parseToken()->authenticate())
$token = str_replace("Bearer ", "", $request->header('Authorization'));
}catch(\Tymon\JWTAuth\Exceptions\JWTException $e){//general JWT exception
$token = 'book';
}
return response()->json(['token' => $token]);
}

There are few exceptions that you might want to handle separately (jwt-auth/Exceptions)

此外,当您使用 laravel 5 时,您可以全局处理 JWT 异常,在这种情况下不推荐,但您应该了解此选项并自行选择。 app/Exceptions/Handler.php 和内部 render 方法添加[在顶部]

if ($e instanceof \Tymon\JWTAuth\Exceptions\JWTException) {
//what happen when JWT exception occurs
}

关于php - Laravel token 签名无法验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32872446/

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