import cetc.nav.project.navtestassess.entity.Login;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;
/**
* @Description: Token工具类
* @author: mcc
* @date: 2021.10.18
*/
public class TokenSubjectUtil {
private static Map<String, Login> subjectMap = new HashMap<>();
private static Map<String, Long> tokenDate = new HashMap<>();
//过期时间
private static Long EXPIRATION_TIME = 30 * 60 * 1000L;
/**
* @description 保存
* @author: mcc
* @datetime: 2021/10/18 22:06
*/
public static void saveSubject(String randomKey, Login sysUserPO) {
subjectMap.put(randomKey, sysUserPO);
}
/**
* @description 保存token时间
* @author: mcc
* @datetime: 2021/10/18 22:06
*/
public static void saveTokenDate(String token, Long date) {
tokenDate.put(token, date);
}
/**
* @description 得到Subject
* @author: mcc
* @datetime: 2021/10/18 22:06
*/
public static Login getSubject(String key) {
return subjectMap.get(key);
}
/**
* @description 删除token
* @author: mcc
* @datetime: 2021/10/22 17:00
*/
public static void deleteToken(String key) {
subjectMap.remove(key);
}
/**
* @description 得到登录用户信息
* @author: mcc
* @datetime: 2021/10/22 18:12
*/
public static Login getUser() {
try {
RequestAttributes ra = RequestContextHolder.getRequestAttributes();
ServletRequestAttributes sra = (ServletRequestAttributes) ra;
assert sra != null;
HttpServletRequest request = sra.getRequest();
String token = request.getHeader("token");
if (token == null) {
return null;
}
Login subject = TokenSubjectUtil.getSubject(token);
return subject;
} catch (Exception e) {
return null;
}
}
/**
* @throws
* @title 更新token的时间
* @description
* @author mcc
* @datetime 2021/11/16 17:26
*/
public static boolean expiredNot(String token) {
long date = tokenDate.get(token);
long newDate = System.currentTimeMillis();
if (newDate - date < EXPIRATION_TIME) {
tokenDate.put(token, newDate);
return true;
} else {
deleteToken(token);
return false;
}
}
}
Token工具类
最新推荐文章于 2024-08-12 15:45:48 发布