JWTUtil.java 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package common.utils;
  2. import com.video.model.pojo.SystemUser;
  3. import io.jsonwebtoken.Claims;
  4. import io.jsonwebtoken.Jwts;
  5. import io.jsonwebtoken.SignatureAlgorithm;
  6. import lombok.extern.slf4j.Slf4j;
  7. import java.util.Date;
  8. /**
  9. * jwt 工具
  10. **/
  11. @Slf4j
  12. public class JWTUtil {
  13. /**
  14. * 主题
  15. */
  16. private static final String SUBJECT = "chuanghai-ihotel";
  17. /**
  18. * 加密密钥
  19. */
  20. private static final String SECRET = "chuanghai.ihotel";
  21. /**
  22. * 令牌前缀
  23. */
  24. private static final String TOKEN_PREFIX = "ihotel";
  25. /**
  26. * token过期时间,7天
  27. */
  28. private static final long EXPIRED = 1000 * 60 * 60 * 24 * 7;
  29. /**
  30. * 获取过期时间
  31. * @return
  32. */
  33. public static long getExpired() {
  34. return EXPIRED;
  35. }
  36. /**
  37. * 生成token
  38. *
  39. * @param loginUser
  40. * @return
  41. */
  42. public static String geneJsonWebToken(SystemUser loginUser) {
  43. if (loginUser == null) {
  44. throw new NullPointerException("对象为空");
  45. }
  46. String adminIdStr = "";
  47. if (loginUser.getId() != null) {
  48. adminIdStr = loginUser.getId().toString();
  49. }
  50. String token = Jwts.builder().setSubject(SUBJECT)
  51. //配置payload
  52. .claim("phone", loginUser.getPhoneNumber())
  53. .claim("role_id", loginUser.getRoleId())
  54. .claim("admin_id", adminIdStr)
  55. .setIssuedAt(new Date())
  56. .setExpiration(new Date(CommonUtil.getCurrentTimestamp() + EXPIRED))
  57. .signWith(SignatureAlgorithm.HS256, SECRET).compact();
  58. token = TOKEN_PREFIX + token;
  59. return token;
  60. }
  61. /**
  62. * 解密jwt
  63. * @param token
  64. * @return
  65. */
  66. public static Claims checkJWT(String token) {
  67. try {
  68. final Claims claims = Jwts.parser().setSigningKey(SECRET).parseClaimsJws(token.replace(TOKEN_PREFIX, "")).getBody();
  69. return claims;
  70. } catch (Exception e) {
  71. return null;
  72. }
  73. }
  74. public static void main(String[] args) {
  75. // System.out.println(geneJsonWebToken(LoginUserDTO.builder().adminId(1L).cardNumber("123456").identityType("1").build()));
  76. }
  77. }