您当前的位置: 首页 > 

java持续实践

暂无认证

  • 2浏览

    0关注

    746博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

黑马十次方项目day06-11之token的工具类

java持续实践 发布时间:2019-02-14 20:09:58 ,浏览量:2

在tensquare_common工程中, 在util包下, 引入该工具类

使用该工具类要注意的是 必须得提供key ,即加密的盐 而过期时间,是可选的.


package util;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.Date;

/**
 * Created by Administrator on 2018/4/11.
 */
@ConfigurationProperties("jwt.config")
public class JwtUtil {

    /**
     * 生成令牌时的加盐
     */
    private String key ;

    /**
     * token 的过期时间
     */
    private long ttl ;//一个小时

    public String getKey() {
        return key;
    }

    public void setKey(String key) {
        this.key = key;
    }

    public long getTtl() {
        return ttl;
    }

    public void setTtl(long ttl) {
        this.ttl = ttl;
    }

    /**
     * 生成JWT
     *
     * @param id  用户的id
     * @param subject  用户的名称
     * @param roles  用户的角色
     * @return
     */
    public String createJWT(String id, String subject, String roles) {
        //获取当前时间
        long nowMillis = System.currentTimeMillis();
        Date now = new Date(nowMillis);
        JwtBuilder builder = Jwts.builder().setId(id) //生成token设置用户id
                .setSubject(subject) //设置用户名称
                .setIssuedAt(now) //IssueAt代表登录时间
                .signWith(SignatureAlgorithm.HS256, key) //加密方式, 加盐
                .claim("roles", roles); //设置用户角色
        if (ttl > 0) {
            //如果过期时间大于0 ,那么设置过期时间, 单位为毫秒
            builder.setExpiration( new Date( nowMillis + ttl));
        }
        return builder.compact();
    }

    /**
     * 解析JWT
     * @param jwtStr
     * @return
     */
    public Claims parseJWT(String jwtStr){
        return  Jwts.parser()
                .setSigningKey(key)
                .parseClaimsJws(jwtStr)
                .getBody();
    }
}
关注
打赏
1658054974
查看更多评论
立即登录/注册

微信扫码登录

0.0407s