jwt介绍
JWT是json web token缩写。它将用户信息加密到token里,服务器不保存任何用户信息。在使用前后端分离时需要用到jwt生成token。
工具类
此工程为maven工程,使用前需要导入:
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
以下为工具类:
package com.qian.onlinetext.util;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.HashMap;
@Component
@ConfigurationProperties(prefix = "jwt.config")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Jwtutil {
//设置密钥,自定义的
private String key = String.valueOf("dskjlgadkgj");
//设置过期时间
private long ttl = 1800000;
public String createJWT(String id) {
long nowMillis = System.currentTimeMillis();
Date nowDate = new Date(nowMillis);
HashMap<String, Object> map = new HashMap<>();
map.put("alg", "HS256");
map.put("typ", "JWT");
JwtBuilder builder = Jwts.builder()
.setHeaderParams(map)
// 设置 id
.setId(id)
.setIssuedAt(nowDate)
// 设置签名使用的签名算法和签名使用的密钥
.signWith(SignatureAlgorithm.HS256, key);
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();
}
}
测试:
@SpringBootTest
class OnlineTextApplicationTests {
@Resource
private Jwtutil jwtutil;
@Test
void contextLoads() {
String jwt = jwtutil.createJWT("郭前胜");
System.out.println("生成的jwt为:"+jwt);
//jwtutil.parseJWT(jwt).getId();
}
}
结果:
生成的jwt为:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJqdGkiOiLpg63liY3og5wiLCJpYXQiOjE2NjUyOTM0MTMsImV4cCI6MTY2NTI5NTIxM30.Nf20njaOlqZifWsQzT_sfCylc8Ab6qORiKq7ovNK6HU
解析测试:
完结!