美文网首页技术分享
JWT设置token过期时间无效

JWT设置token过期时间无效

作者: 过客_hui | 来源:发表于2019-08-14 21:28 被阅读0次

原因:设置超时时间的顺序有误, 应调用setClaims()方法设置claims属性。 在调用setExpiration()方法设置超时时间。

Date expiresDate = new Date(System.currentTimeMillis() + expire_time);// expire_time为token有效时长, 单位毫秒

错误顺序示例:

    JwtBuilder result = Jwts.builder()

                                .setExpiration(date)

                                .setClaims(claims)

                                .signWith(SignatrueAlgorithm.HS256, Constants.BASE64SECRET);

正确示例:

JwtBuilder result = Jwts.builder()

                                .setClaims(claims)

                                .setExpiration(date)

                                .signWith(SignatrueAlgorithm.HS256, Constants.BASE64SECRET);

原因分析:

//io.jsonwebtoken.impl.DefaultJwtBuilder#setExpiration 中代码

@Override

 public JwtBuilder setExpiration(Date exp){

    if(exp!=null){

    ensureClamis().setExoiration(exp);

}else{

    if(this.claims!=null){

    //noinspection ConstantConditions

    this.claims.setExpiration(exp);

}

}

return this;

}

// io.jsonwebtoken.impl.DefaultJwtBuilder#ensureClaims 中代码

    protected Claims ensureClaims() {

            // 如果claims为null, 则创建新的示例。 此处没有问题

                  if(this.claims==null){

                        this.claims=new DefaultClaims();

                    }

                    return this.claims;

}

// io.jsonwebtoken.impl.DefaultJwtBuilder#setClaims(io.jsonwebtoken.Claims) 中代码

@Override

public JwtBuilder setClaims(Claims claims) {

// 直接给claims赋值, 这里个操作覆盖了之前设置的超时时间,

// 导致最终构造token时, 没有设置超时时间

this.claims=claims;

return this;

}

相关文章

  • JWT设置token过期时间无效

    原因:设置超时时间的顺序有误, 应调用setClaims()方法设置claims属性。 在调用setExpirat...

  • oauth2设置token过期时间

    oauth2设置token过期时间,oauth2设置刷新token过期时间 oauth2设置token过期时间,在...

  • 设计一个高质量API

    调试一个登录接口,后端使用jwt来进行token生成,明明token中有exp过期时间,但是后端却不使用这个过期时...

  • Token过期处理

    Token用于进行接口鉴权,但是Token具有由后端设置的过期时间,当Token过期以后,就无法再请求数据了项目中...

  • jsonwebtoken设置token passport

    首先设置下载库文件 jsonwebtoken设置token passport passport-jwt获取toke...

  • laravel设置自定义相应头不起作用

    背景 在使用token做登录验证时,需要给token设置过期时间,对于活跃用户,后台自动生成新的token,传给前...

  • 前端控制token过期

    需求: 只要用户有操作行为,token永不过期的做法 token过期时间一般由后台控制,例如后台设置2个小时tok...

  • JWT的TOKEN续期功能

    JWT里有一个关键的东东,就是续期TOKEN,即TOKEN快过期时,刷新一个新的TOKEN给客户端.办法如下:1....

  • JWT 认证过程

    JWT Token Structure A JWT token contains a Header, a Payl...

  • 登录token过期时间

    由于项目中对token设置两小时过期时间,导致经常大批量处理消息体带有token处理失效。之前对接口返回token...

网友评论

    本文标题:JWT设置token过期时间无效

    本文链接:https://www.haomeiwen.com/subject/gofojctx.html