token:
eyJhbGciOiJIUzI1NiJ9.(base64.encode(header))
eyJzdWIiOiJ1c2VybmFtZSIsImV4cCI6MTY0Nzc2MTU3M30.(base64(payload 载荷2 ,信息用户名,用户id))
GuO_mG8MIZBsHJebAL4Mk0sGvXYllxHt0jANIiPe0HM(散列加密(payload,盐(secret)))
public class JwtUtil {
private static final String secret = "asdadac";
public static String createToken(String subject){
String token = Jwts.builder().setSubject(subject)
.setExpiration(new Date(System.currentTimeMillis()+1000*40))
.signWith(SignatureAlgorithm.HS256, secret)
.compact();
return token;
}
public static String parseToken(String token){
Claims body = Jwts.parser().setSigningKey(secret).parseClaimsJws(token).getBody();
String subject = body.getSubject();
return subject;
}
public static void main(String[] args) throws InterruptedException {
String name = "哈哈";
String token = createToken(name);
System.out.println("token:"+token);
String srcStr = parseToken(token);
System.out.println("解析出来:"+srcStr);
System.out.println("==================");
TimeUnit.SECONDS.sleep(60);
srcStr = parseToken(token);
System.out.println("解析出来:"+srcStr);
}
}
@PostMapping("/login")
public String login(@RequestBody UmsMemberLoginParamDTO umsMemberLoginParamDTO){
return umsMemberService.login(umsMemberLoginParamDTO);
}
public String login(UmsMemberLoginParamDTO umsMemberLoginParamDTO) {
UmsMember umsMember = umsMemberMapper.selectByName(umsMemberLoginParamDTO.getUsername());
if(null!=umsMember){
String passwordDb = umsMember.getPassword();
if(!passwordEncoder.matches(umsMemberLoginParamDTO.getPassword(),passwordDb)){
return "密码不正确";
}
}else{
return "用户不存在";
}
String token = JwtUtil.createToken(umsMember.getUsername());
System.out.println("登入成功");
return token;
}