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);
}}
结果显示: