请问 tymon/jwt-auth 的 token 过期后抛出的异常不是过期异常,而是权限认证失败的异常。

file
token

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC93d3cuc2hhcmUuY29tXC9sb2dpbiIsImlhdCI6MTU0NDMzOTg5NCwiZXhwIjoxNTQ0MzQwMDE0LCJuYmYiOjE1NDQzMzk4OTQsImp0aSI6Im4yM0NKUWFiMmdyRkRaY2kiLCJzdWIiOjEsInBydiI6Ijg3ZTBhZjFlZjlmZDE1ODEyZmRlYzk3MTUzYTE0ZTBiMDQ3NTQ2YWEifQ.TdXpABTPoKH2DkKpsY3cKD9sc8AVNJRWPcVOu4PO6co

token解码

{"typ":"JWT","alg":"HS256"}
{"iss":"http:\/\/www.share.com\/login","iat":1544339894,"exp":1544340014,"nbf":1544339894,"jti":"n23CJQab2grFDZci","sub":1,"prv":"87e0af1ef9fd15812fdec97153a14e0b047546aa"}

过期了后按道理应该时抛出 TokenExpiredException

配置文件照旧。除了更改了过期时间为1分钟

采用账号密码生成token的形式

yema
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 1
meitesi
public function render($request, Exception $exception)
    {
        // detect instance
        if ($exception instanceof UnauthorizedHttpException) {
            // detect previous instance
            if ($exception->getPrevious() instanceof TokenExpiredException) {
                return response()->json(['error' => 'TOKEN_EXPIRED'], $exception->getStatusCode());
            } else if ($exception->getPrevious() instanceof TokenInvalidException) {
                return response()->json(['error' => 'TOKEN_INVALID'], $exception->getStatusCode());
            } else if ($exception->getPrevious() instanceof TokenBlacklistedException) {
                return response()->json(['error' => 'TOKEN_BLACKLISTED'], $exception->getStatusCode());
            } else {
                return response()->json(['error' => "UNAUTHORIZED_REQUEST"], 401);
            }
        }
        return parent::render($request, $exception);
    }

参考GitHub:https://github.com/tymondesigns/jwt-auth/i...

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!