我在让这个中间件在Laravel中工作时遇到了一些麻烦。我使用Tymon的JWT检查令牌是否有效,但是当我使用Postman进行测试时,我得不到任何响应,而不是我设置的HTTP 4xx错误。
public function handle($request, Closure $next, $guard = null)
{
try {
JWTAuth::parseToken()->authenticate();
} catch (TokenExpiredException $e) { //Token Expired
return response('Token Expired', 440);
} catch (TokenInvalidException $e) { //Token Invalid
return response('Token Invalid', 401);
} catch (JWTException $e) {
echo("TEST");
return response('Token Exception', 499);
} catch (TokenBlacklistedException $e) { //Token Blacklisted
return response('Token Blacklisted', 403);
}
return $next($request);
}
当我尝试在Postman调用的标题中不使用任何标记时,它告诉我服务器没有响应。
Could not get any response
There was an error connecting to api.website.dev/test.
Why this might have happened:
The server couldn't send a response:
Ensure that the backend is working properly
Self-signed SSL certificates are being blocked:
Fix this by turning off 'SSL certificate verification' in Settings > General
Client certificates are required for this server:
Fix this by adding client certificates in Settings > Certificates
Request timeout:
Change request timeout in Settings > General
似乎触发了异常,但是当我放置类似echo语句的内容时,我只能从服务器得到反应,如上面的代码所示。
我在代码的其他部分也遇到了问题,我无法创建排队的作业,Postman说服务器没有使用相同的Could not get any response
消息进行响应。
这是Laravel的问题还是我做错了什么? 提前感谢您的帮助!
答案 0 :(得分:3)
事实证明这是完美的。我使用Paw而不是Postman,它通过HTTP向我显示正确的错误代码和正确的消息。看起来问题出在Postman身上。
答案 1 :(得分:0)
一次,我遇到了同样的问题。这是由"Authorization"
标头值结尾处的换行引起的,我是通过复制粘贴不记名令牌(偶然在其末尾包含换行符)来手动设置的