JwtToken.java 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package com.xet.shiro.utils;
  2. import com.auth0.jwt.interfaces.DecodedJWT;
  3. import com.xet.util.IpUtil;
  4. import lombok.Data;
  5. import lombok.experimental.Accessors;
  6. import org.apache.shiro.authc.HostAuthenticationToken;
  7. import java.util.Date;
  8. /**
  9. * Shiro JwtToken对象
  10. **/
  11. @Data
  12. @Accessors(chain = true)
  13. public class JwtToken implements HostAuthenticationToken {
  14. private static final long serialVersionUID = 5101247566043093405L;
  15. /**
  16. * 登录ip
  17. */
  18. private String host;
  19. /**
  20. * 登录用户名称
  21. */
  22. private String username;
  23. /**
  24. * 登录盐值
  25. */
  26. private String salt;
  27. /**
  28. * 登录token
  29. */
  30. private String token;
  31. /**
  32. * 创建时间
  33. */
  34. private Date createDate;
  35. /**
  36. * 多长时间过期,默认一小时
  37. */
  38. private long expireSecond;
  39. /**
  40. * 过期日期
  41. */
  42. private Date expireDate;
  43. private String principal;
  44. private String credentials;
  45. @Override
  46. public Object getPrincipal() {
  47. return token;
  48. }
  49. @Override
  50. public Object getCredentials() {
  51. return token;
  52. }
  53. public static JwtToken build(String token, String username, String salt, long expireSecond) {
  54. DecodedJWT decodedJwt = JwtUtil.getJwtInfo(token);
  55. Date createDate = decodedJwt.getIssuedAt();
  56. Date expireDate = decodedJwt.getExpiresAt();
  57. return new JwtToken()
  58. .setUsername(username)
  59. .setToken(token)
  60. .setHost(IpUtil.getRequestIp())
  61. .setSalt(salt)
  62. .setCreateDate(createDate)
  63. .setExpireSecond(expireSecond)
  64. .setExpireDate(expireDate);
  65. }
  66. }