|
@@ -15,6 +15,7 @@ import javax.servlet.*;
|
|
|
import javax.servlet.http.Cookie;
|
|
import javax.servlet.http.Cookie;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
|
+import javax.servlet.http.HttpSession;
|
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
|
import java.io.UnsupportedEncodingException;
|
|
import java.io.UnsupportedEncodingException;
|
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
@@ -42,36 +43,33 @@ public class SSOInterceptor extends HandlerInterceptorAdapter implements Filter
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private final boolean authenticate(HttpServletRequest request, HttpServletResponse response) throws IOException {
|
|
private final boolean authenticate(HttpServletRequest request, HttpServletResponse response) throws IOException {
|
|
|
- User user = SystemSession.getUser();
|
|
|
|
|
- if (null == user) {
|
|
|
|
|
- Cookie[] cookies = request.getCookies();
|
|
|
|
|
- List<Cookie> cookieList = new ArrayList<>();
|
|
|
|
|
- if (null != cookies) {
|
|
|
|
|
- cookieList = Arrays.asList(cookies);
|
|
|
|
|
- }
|
|
|
|
|
- final boolean[] cookieExist = {false};
|
|
|
|
|
- boolean cookieFlag = checkCookie(cookieExist, cookieList, request);
|
|
|
|
|
- if (!cookieFlag) {
|
|
|
|
|
- if (!this.onAuthenticateFailed(request, response)) {
|
|
|
|
|
- return false;
|
|
|
|
|
- } else {
|
|
|
|
|
- return true;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ Cookie[] cookies = request.getCookies();
|
|
|
|
|
+ List<Cookie> cookieList = new ArrayList<>();
|
|
|
|
|
+ if (null != cookies) {
|
|
|
|
|
+ cookieList = Arrays.asList(cookies);
|
|
|
|
|
+ }
|
|
|
|
|
+ final boolean[] cookieExist = {false};
|
|
|
|
|
+ boolean cookieFlag = checkCookie(cookieExist, cookieList, request);
|
|
|
|
|
+ if (!cookieFlag) {
|
|
|
|
|
+ if (!this.onAuthenticateFailed(request, response)) {
|
|
|
|
|
+ return false;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ return true;
|
|
|
}
|
|
}
|
|
|
- // 通过HttpServletRequest获取登录信息
|
|
|
|
|
- logSession(request);
|
|
|
|
|
- user = SystemSession.getUser();
|
|
|
|
|
- // 未登录则要求登录
|
|
|
|
|
- if (user == null) {
|
|
|
|
|
- logoutSession(request);
|
|
|
|
|
- if (!this.onAuthenticateFailed(request, response)) {
|
|
|
|
|
- return false;
|
|
|
|
|
- } else {
|
|
|
|
|
- return true;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+ // 通过HttpServletRequest获取登录信息
|
|
|
|
|
+ logSession(request);
|
|
|
|
|
+ User user = SystemSession.getUser();
|
|
|
|
|
+ // 未登录则要求登录
|
|
|
|
|
+ if (user == null) {
|
|
|
|
|
+ logoutSession(request);
|
|
|
|
|
+ if (!this.onAuthenticateFailed(request, response)) {
|
|
|
|
|
+ return false;
|
|
|
} else {
|
|
} else {
|
|
|
- checkLogin(response);
|
|
|
|
|
|
|
+ return true;
|
|
|
}
|
|
}
|
|
|
|
|
+ } else {
|
|
|
|
|
+ checkLogin(response);
|
|
|
}
|
|
}
|
|
|
return true;
|
|
return true;
|
|
|
}
|
|
}
|
|
@@ -87,7 +85,9 @@ public class SSOInterceptor extends HandlerInterceptorAdapter implements Filter
|
|
|
cookieList.forEach(cookie -> {
|
|
cookieList.forEach(cookie -> {
|
|
|
switch (cookie.getName()) {
|
|
switch (cookie.getName()) {
|
|
|
case (Constant.COOKIE_NAME):
|
|
case (Constant.COOKIE_NAME):
|
|
|
- cookieExist[0] = true;
|
|
|
|
|
|
|
+ if (request.getSession().getId().equals(cookie.getValue())) {
|
|
|
|
|
+ cookieExist[0] = true;
|
|
|
|
|
+ }
|
|
|
break;
|
|
break;
|
|
|
default:
|
|
default:
|
|
|
}
|
|
}
|
|
@@ -114,21 +114,15 @@ public class SSOInterceptor extends HandlerInterceptorAdapter implements Filter
|
|
|
* @param request HttpServletRequest
|
|
* @param request HttpServletRequest
|
|
|
*/
|
|
*/
|
|
|
private void logSession(HttpServletRequest request) throws UnsupportedEncodingException {
|
|
private void logSession(HttpServletRequest request) throws UnsupportedEncodingException {
|
|
|
- Cookie[] cookies = request.getCookies();
|
|
|
|
|
- if (null != cookies) {
|
|
|
|
|
- Arrays.asList(cookies).forEach(cookie -> {
|
|
|
|
|
- switch (cookie.getName()) {
|
|
|
|
|
- case (Constant.COOKIE_NAME):
|
|
|
|
|
- String result = EncryptUtils.aesDecode(cookie.getValue());
|
|
|
|
|
- User user = JSONObject.parseObject(result, User.class);
|
|
|
|
|
- if (user != null) {
|
|
|
|
|
- SystemSession.setUser(user);
|
|
|
|
|
- log.info("登录成功," + user.toString());
|
|
|
|
|
- }
|
|
|
|
|
- break;
|
|
|
|
|
- default:
|
|
|
|
|
- }
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ HttpSession session = request.getSession();
|
|
|
|
|
+ Object object = session.getAttribute("user");
|
|
|
|
|
+ if (null != object) {
|
|
|
|
|
+ String result = EncryptUtils.aesDecode(object.toString());
|
|
|
|
|
+ User user = JSONObject.parseObject(result, User.class);
|
|
|
|
|
+ if (user != null) {
|
|
|
|
|
+ SystemSession.setUser(user);
|
|
|
|
|
+ log.info("登录成功," + user.toString());
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -165,13 +159,7 @@ public class SSOInterceptor extends HandlerInterceptorAdapter implements Filter
|
|
|
*/
|
|
*/
|
|
|
private void removeLocalSession(HttpServletRequest request) {
|
|
private void removeLocalSession(HttpServletRequest request) {
|
|
|
SystemSession.clear();
|
|
SystemSession.clear();
|
|
|
- Cookie[] cookies = request.getCookies();
|
|
|
|
|
- if (null != cookies) {
|
|
|
|
|
- Arrays.asList(cookies).forEach(cookie -> {
|
|
|
|
|
- cookie.setMaxAge(0);
|
|
|
|
|
- cookie.setPath("/");
|
|
|
|
|
- });
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ request.getSession().removeAttribute("user");
|
|
|
User user = SystemSession.getUser();
|
|
User user = SystemSession.getUser();
|
|
|
if (null != user) {
|
|
if (null != user) {
|
|
|
removeLocalSession(request);
|
|
removeLocalSession(request);
|