forked from github/dataease
feat: 完善登录过期功能
This commit is contained in:
parent
70a298025b
commit
12f2148030
@ -55,12 +55,19 @@ public class JWTFilter extends BasicHttpAuthenticationFilter {
|
|||||||
throw new AuthenticationException(expireMessage);
|
throw new AuthenticationException(expireMessage);
|
||||||
}
|
}
|
||||||
if (JWTUtils.needRefresh(authorization)){
|
if (JWTUtils.needRefresh(authorization)){
|
||||||
|
String oldAuthorization = authorization;
|
||||||
authorization = refreshToken(request, response);
|
authorization = refreshToken(request, response);
|
||||||
|
JWTUtils.removeTokenExpire(oldAuthorization);
|
||||||
}
|
}
|
||||||
|
// 删除老的操作时间
|
||||||
|
JWTUtils.removeTokenExpire(authorization);
|
||||||
|
// 设置新的操作时间
|
||||||
|
JWTUtils.addTokenExpire(authorization);
|
||||||
JWTToken token = new JWTToken(authorization);
|
JWTToken token = new JWTToken(authorization);
|
||||||
Subject subject = getSubject(request, response);
|
Subject subject = getSubject(request, response);
|
||||||
// 提交给realm进行登入,如果错误他会抛出异常并被捕获
|
// 提交给realm进行登入,如果错误他会抛出异常并被捕获
|
||||||
subject.login(token);
|
subject.login(token);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -98,10 +105,10 @@ public class JWTFilter extends BasicHttpAuthenticationFilter {
|
|||||||
String password = user.getPassword();
|
String password = user.getPassword();
|
||||||
|
|
||||||
// 删除老token操作时间
|
// 删除老token操作时间
|
||||||
JWTUtils.removeTokenExpire(token);
|
// JWTUtils.removeTokenExpire(token);
|
||||||
String newToken = JWTUtils.sign(tokenInfo, password);
|
String newToken = JWTUtils.sign(tokenInfo, password);
|
||||||
// 记录新token操作时间
|
// 记录新token操作时间
|
||||||
JWTUtils.addTokenExpire(newToken);
|
// JWTUtils.addTokenExpire(newToken);
|
||||||
|
|
||||||
JWTToken jwtToken = new JWTToken(newToken);
|
JWTToken jwtToken = new JWTToken(newToken);
|
||||||
this.getSubject(request, response).login(jwtToken);
|
this.getSubject(request, response).login(jwtToken);
|
||||||
|
@ -20,9 +20,9 @@ public class JWTUtils {
|
|||||||
|
|
||||||
|
|
||||||
// token过期时间1min (过期会自动刷新续命 目的是避免一直都是同一个token )
|
// token过期时间1min (过期会自动刷新续命 目的是避免一直都是同一个token )
|
||||||
private static final long EXPIRE_TIME = 5*60*1000;
|
private static final long EXPIRE_TIME = 1*60*1000;
|
||||||
// 登录间隔时间10min 超过这个时间强制重新登录
|
// 登录间隔时间10min 超过这个时间强制重新登录
|
||||||
private static final long Login_Interval = 30*60*1000;
|
private static final long Login_Interval = 10*60*1000;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -81,8 +81,17 @@ public class JWTUtils {
|
|||||||
public static boolean loginExpire(String token){
|
public static boolean loginExpire(String token){
|
||||||
Long now = System.currentTimeMillis();
|
Long now = System.currentTimeMillis();
|
||||||
Long lastOperateTime = tokenLastOperateTime(token);
|
Long lastOperateTime = tokenLastOperateTime(token);
|
||||||
if (lastOperateTime == null) return true;
|
boolean isExpire = false;
|
||||||
return now - lastOperateTime > Login_Interval;
|
if (lastOperateTime != null) {
|
||||||
|
isExpire = now - lastOperateTime > Login_Interval;
|
||||||
|
}
|
||||||
|
if (isExpire) {
|
||||||
|
System.out.println("-----------------------");
|
||||||
|
System.out.println("-----上次操作时间是["+lastOperateTime+"]-----");
|
||||||
|
System.out.println("-----当前操作时间是["+now+"]-----");
|
||||||
|
System.out.println("-----------------------");
|
||||||
|
}
|
||||||
|
return isExpire;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Date getExp(String token) {
|
public static Date getExp(String token) {
|
||||||
|
Loading…
Reference in New Issue
Block a user