JWT开发

1.添加jjwt依赖包

    <dependency>
      <groupId>io.jsonwebtoken</groupId>
      <artifactId>jjwt</artifactId>
      <version>0.9.1</version>
    </dependency>

2.application.yml配置Jwt相关信息

jwt:
  header: jwt-token
  secret: testSecret
  expired: 30000  #单位毫秒
  queryToken: TOKEN

3.编写JwtToken 配置类

@Data
@Configuration
public class JwtConfig {
    //header名称
    @Value("${jwt.header}")
    private String header;

    //密码
    @Value("${jwt.secret}")
    private String secret;

    //过期时间,单位毫秒
    @Value("${jwt.expired}")
    private Long expired;

    @Value("${jwt.queryToken}")
    private String queryToken;
}

4.编写JwtUtil工具类,是一个很简单的可以使用的类,更多的功能根据需要添加

@Component
public class JwtUtil {
    @Autowired
    private JwtConfig jwtConfig;

    public String createJwt(String subject){
        //指定签名使用的算法,也就是header部分,这个已经在jjwt封装好了
        SignatureAlgorithm signatureAlgorithm=SignatureAlgorithm.HS256;
        JwtBuilder builder= Jwts.builder()

                //签发时间
                .setIssuedAt(new Date(System.currentTimeMillis()))  

                //签发主体
                .setSubject(subject)

                //过期时间
                .setExpiration(new Date(System.currentTimeMillis()+ jwtConfig.getExpired()))

                //使用HS256加密
                .signWith(signatureAlgorithm,jwtConfig.getSecret());
        return  builder.compact();
    }

    public String getSubjectByJwt(String jwt) {

        String subject = Jwts.parser().setSigningKey(jwtConfig.getSecret())
                .parseClaimsJws(jwt).getBody().getSubject();

        return subject;
    }


}

4.编写测试类

@SpringBootTest
@RunWith(SpringRunner.class)
public class AppTest 
{

    @Autowired

    JwtUtil jwtUtil;

    @Test
    public  void testJwt(){
        String jwt=  jwtUtil.createJwt("lyy");
        System.out.println(jwt);
        String subject=jwtUtil.getSubjectByJwt(jwt);
        System.out.println(subject);
    }

}

结果显示:

猜你喜欢

转载自blog.csdn.net/liyayou/article/details/122204932
jwt