You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
922 B
29 lines
922 B
package com.project.ding.utils;
|
|
|
|
import io.jsonwebtoken.Claims;
|
|
import io.jsonwebtoken.Jwts;
|
|
import io.jsonwebtoken.SignatureAlgorithm;
|
|
import io.jsonwebtoken.security.Keys;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
import java.security.Key;
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
|
|
@Component
|
|
public class JwtUtils {
|
|
private static final Key KEY = Keys.secretKeyFor(SignatureAlgorithm.HS256);
|
|
private static final long EXPIRE = 86400000; // 24小时
|
|
|
|
public String createToken(String userId, List<String> roles) {
|
|
return Jwts.builder()
|
|
.setSubject(userId)
|
|
.claim("roles", roles)
|
|
.setExpiration(new Date(System.currentTimeMillis() + EXPIRE))
|
|
.signWith(KEY).compact();
|
|
}
|
|
|
|
public Claims parseToken(String token) {
|
|
return Jwts.parserBuilder().setSigningKey(KEY).build().parseClaimsJws(token).getBody();
|
|
}
|
|
}
|