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
  • 相关阅读:
    白话算法(6) 散列表(Hash Table)从理论到实用(中)
    白话算法(6) 散列表(Hash Table) 从理论到实用(下)
    基于无锁的C#并发队列实现
    邻接表建图的三种方式的时空比较(解析+图示)
    Windows内存管理(1)--分配内核内存 和 使用链表
    Windows内存管理(2)--Lookaside结构 和 运行时函数
    error C2443: operand size conflict
    CPUID 指令的使用
    Windows内核驱动开发入门学习资料
    重载内核全程分析笔记
  • 原文地址:https://www.cnblogs.com/lyy0622/p/15135352.html
Copyright © 2011-2022 走看看