package com.xet.shiro.utils; import com.auth0.jwt.interfaces.DecodedJWT; import com.xet.util.IpUtil; import lombok.Data; import lombok.experimental.Accessors; import org.apache.shiro.authc.HostAuthenticationToken; import java.util.Date; /** * Shiro JwtToken对象 **/ @Data @Accessors(chain = true) public class JwtToken implements HostAuthenticationToken { private static final long serialVersionUID = 5101247566043093405L; /** * 登录ip */ private String host; /** * 登录用户名称 */ private String username; /** * 登录盐值 */ private String salt; /** * 登录token */ private String token; /** * 创建时间 */ private Date createDate; /** * 多长时间过期,默认一小时 */ private long expireSecond; /** * 过期日期 */ private Date expireDate; private String principal; private String credentials; @Override public Object getPrincipal() { return token; } @Override public Object getCredentials() { return token; } public static JwtToken build(String token, String username, String salt, long expireSecond) { DecodedJWT decodedJwt = JwtUtil.getJwtInfo(token); Date createDate = decodedJwt.getIssuedAt(); Date expireDate = decodedJwt.getExpiresAt(); return new JwtToken() .setUsername(username) .setToken(token) .setHost(IpUtil.getRequestIp()) .setSalt(salt) .setCreateDate(createDate) .setExpireSecond(expireSecond) .setExpireDate(expireDate); } }