|
@@ -1,5 +1,9 @@
|
|
package org.hswebframework.web.authorization.basic.web;
|
|
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.HttpServletRequest;
|
|
import javax.servlet.http.HttpSession;
|
|
import javax.servlet.http.HttpSession;
|
|
import java.util.function.Predicate;
|
|
import java.util.function.Predicate;
|
|
@@ -8,12 +12,49 @@ import java.util.function.Predicate;
|
|
* @author zhouhao
|
|
* @author zhouhao
|
|
*/
|
|
*/
|
|
public class SessionIdUserTokenParser implements UserTokenParser {
|
|
public class SessionIdUserTokenParser implements UserTokenParser {
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ protected UserTokenManager userTokenManager;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ public void setUserTokenManager(UserTokenManager userTokenManager) {
|
|
|
|
+ this.userTokenManager = userTokenManager;
|
|
|
|
+ }
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public ParsedToken parseToken(HttpServletRequest request) {
|
|
public ParsedToken parseToken(HttpServletRequest request) {
|
|
|
|
|
|
HttpSession session = request.getSession(false);
|
|
HttpSession session = request.getSession(false);
|
|
|
|
|
|
if (session != null) {
|
|
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() {
|
|
return new ParsedToken() {
|
|
@Override
|
|
@Override
|
|
public String getToken() {
|
|
public String getToken() {
|