jwt的封装与使用

jwt封装代码如下
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 ;//----------------------盐

    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
    • @param subject
    • @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)
      .setSubject(subject)
      .setIssuedAt(now)
      .signWith(SignatureAlgorithm.HS256, key).claim(“roles”, roles);
      if (ttl > 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();
      }

}

使用jwt
//登陆
jwt的封装与使用_第1张图片

//登陆之后管理员进行增加普通用户验证
jwt的封装与使用_第2张图片
然而这样写还不够安全,在之前的基础上在加上约定的信息
jwt的封装与使用_第3张图片
这样写增加删除修改每个方法上面都需要对token 鉴权 代码显得麻烦,这个时候就用到了拦截器

拦截器代码jwt的封装与使用_第4张图片
加粗样式**
jwt的封装与使用_第5张图片
这样配置完之后增删改的方法里至于要下面的代码就可而已了,实现了代码的简便在这里插入图片描述

你可能感兴趣的:(jwt单点登陆)