zoukankan      html  css  js  c++  java
  • JWT 获取tooken

    <properties>
    <jwt.version>0.7.0</jwt.version>
    </properties>

    <dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt</artifactId>
    <version>${jwt.version}</version>
    </dependency>
    /**
    * jwt工具类
    *
    */
    @ConfigurationProperties(prefix = "sqx.jwt")
    @Component
    public class JwtUtils {
    private Logger logger = LoggerFactory.getLogger(getClass());
    //密钥
    private String secret;
    //时间
    private long expire;
    private String header;

    /**
    * 生成jwt token
    */
    public String generateToken(long userId) {
    Date nowDate = new Date();
    //过期时间
    Date expireDate = new Date(nowDate.getTime() + expire * 1000);
    // jwt实例
    return Jwts.builder()
    // 设置header
    .setHeaderParam("typ", "JWT")
    .setSubject(userId+"")//代表这个JWT的主体 个人标识
    .setIssuedAt(nowDate)//iat: jwt的签发时间
    .setExpiration(expireDate)//设置过期时间
    .signWith(SignatureAlgorithm.HS512, secret)//设置签名使用的签名算法和签名使用的秘钥
    .compact(); //开始压缩
    }

    public Claims getClaimByToken(String token) {
    try {
    return Jwts.parser()
    .setSigningKey(secret)
    .parseClaimsJws(token)
    .getBody();
    }catch (Exception e){
    logger.debug("validate is token error ", e);
    return null;
    }
    }

    /**
    * token是否过期
    * @return true:过期
    */
    public boolean isTokenExpired(Date expiration) {
    return expiration.before(new Date());
    }

    public String getSecret() {
    return secret;
    }

    public void setSecret(String secret) {
    this.secret = secret;
    }

    public long getExpire() {
    return expire;
    }

    public void setExpire(long expire) {
    this.expire = expire;
    }

    public String getHeader() {
    return header;
    }

    public void setHeader(String header) {
    this.header = header;
    }
    }

    yml

    sqx:
    # APP模块,是通过jwt认证的,如果要使用APP模块,则需要修改【加密秘钥】
    jwt:
    # 加密秘钥
    secret: *************
    # token有效时长,7天,单位秒
    expire: 604800
    header: token
  • 相关阅读:
    socket用法以及tomcat静态动态页面的加载
    SQL2000的三种“故障还原模型”
    杀毒软件拦截的,看不懂,留作纪念
    TOMCAT如何建立两个端口或服务
    非正常关机后造成数据库 置疑 状态的解决办法
    各数据表的空间使用量
    SQL Server 2008维护计划 出错 无法实现自动备份
    SQL2008安装自动退出
    oracle自动备份
    吐槽一下金山卫士
  • 原文地址:https://www.cnblogs.com/lyy0622/p/15135352.html
Copyright © 2011-2022 走看看