jwt令牌
注入依赖
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
test运行jwt令牌
package com.example.shangke;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@SpringBootTest
class ShangkeApplicationTests {
@Test
void contextLoads() {
}
//生成Jwt
@Test
public void testGenJwt(){
Map<String, Object> claims = new HashMap<>();
claims.put("id",1);
claims.put("name","Tom");
String jwt = Jwts.builder()
.signWith(SignatureAlgorithm.HS256,"itheima")//签名算法
.setClaims(claims) //自定义的内容(载荷)
.setExpiration(new Date(System.currentTimeMillis() + 3600*1000)) //设置有效期为1h
.compact();
System.out.println(jwt);
}
//解析Jwt
@Test
public void testParseJwt(){
Claims claims = Jwts.parser()
.setSigningKey("itheima")
.parseClaimsJws("eyJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiVG9tIiwiaWQiOjEsImV4cCI6MTcxODEyMTc3M30.t9DQLQL-H55ojGC4Hyl4evscZPZ18mcOAXAPj8nco1U")
.getBody();
System.out.println(claims);
}
}
解码:
eyJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiVG9tIiwiaWQiOjEsImV4cCI6MTcxOTA0MjkzNH0.tlWRac2S1QCb1sWxcTmtKS4A8oUGC_Mm6RrrX_kTD2c
用函数实现解析
@Test
public void testParseJwt(){
Claims claims = Jwts.parser()
.setSigningKey("itheima")
.parseClaimsJws("eyJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoidG9tIiwiaWQiOjEsImV4cCI6MTcxOTI4NDUxMX0._7o7PzawMWBmErnW1RV8iCEigKE3cv9_5EiRuDmmrwA")
.getBody();
System.out.println(claims);
}
数据库中无数据则会返回“0”和“对不起,请联系管理员,操作失败”
成功则显示为: