mirror of
https://github.com/hs-web/hsweb-framework.git
synced 2026-06-09 17:34:50 +08:00
优化过期判断
This commit is contained in:
@@ -1,5 +1,9 @@
|
||||
package org.hswebframework.web.authorization.basic.web;
|
||||
|
||||
import org.hswebframework.web.authorization.token.UserToken;
|
||||
import org.hswebframework.web.authorization.token.UserTokenManager;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.util.function.Predicate;
|
||||
@@ -8,12 +12,49 @@ import java.util.function.Predicate;
|
||||
* @author zhouhao
|
||||
*/
|
||||
public class SessionIdUserTokenParser implements UserTokenParser {
|
||||
|
||||
|
||||
protected UserTokenManager userTokenManager;
|
||||
|
||||
@Autowired
|
||||
public void setUserTokenManager(UserTokenManager userTokenManager) {
|
||||
this.userTokenManager = userTokenManager;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ParsedToken parseToken(HttpServletRequest request) {
|
||||
|
||||
HttpSession session = request.getSession(false);
|
||||
|
||||
if (session != null) {
|
||||
String sessionId = session.getId();
|
||||
UserToken token = userTokenManager.getByToken(sessionId);
|
||||
long interval = session.getMaxInactiveInterval();
|
||||
//当前已登录token已失效但是session未失效
|
||||
if (token != null && token.isExpired()) {
|
||||
String userId = token.getUserId();
|
||||
return new AuthorizedToken() {
|
||||
@Override
|
||||
public String getUserId() {
|
||||
return userId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getToken() {
|
||||
return sessionId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getType() {
|
||||
return "session-id-default";
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getMaxInactiveInterval() {
|
||||
return interval;
|
||||
}
|
||||
};
|
||||
}
|
||||
return new ParsedToken() {
|
||||
@Override
|
||||
public String getToken() {
|
||||
|
||||
Reference in New Issue
Block a user