|
@ -9,6 +9,7 @@ import javax.servlet.FilterChain;
|
|
|
import javax.servlet.ServletException;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
import javax.servlet.http.HttpSession;
|
|
|
import java.io.IOException;
|
|
|
|
|
|
/**
|
|
@ -20,47 +21,49 @@ import java.io.IOException;
|
|
|
public class SessionOutTimeFilter extends OncePerRequestFilter {
|
|
|
|
|
|
@Override
|
|
|
protected void doFilterInternal(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, FilterChain filterChain) throws ServletException, IOException {
|
|
|
String path = httpServletRequest.getRequestURI();
|
|
|
if (path.indexOf("/login") != -1
|
|
|
|| path.indexOf("/tenantAutoFail") != -1
|
|
|
|| path.indexOf("/tokenValidFail") != -1
|
|
|
|| path.indexOf("/system/loginAction") != -1
|
|
|
|| path.indexOf("/error") != -1
|
|
|
|| path.indexOf("/test.jsp") != -1
|
|
|
|| path.indexOf("/logoutAction") != -1
|
|
|
|| path.indexOf(httpServletRequest.getContextPath() + "/static-dev") != -1
|
|
|
|| path.indexOf(httpServletRequest.getContextPath() + "/develop") != -1
|
|
|
|| path.indexOf(httpServletRequest.getContextPath() + "/rest") != -1
|
|
|
|| path.indexOf(httpServletRequest.getContextPath() + "/process") != -1
|
|
|
|| path.indexOf("swagger") != -1
|
|
|
|| path.indexOf(httpServletRequest.getContextPath() + "/v2/api-docs") != -1
|
|
|
|| path.indexOf("/tenant/delFile") != -1
|
|
|
|| path.indexOf(httpServletRequest.getContextPath() + "/mobile") != -1) {
|
|
|
filterChain.doFilter(httpServletRequest, httpServletResponse);
|
|
|
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
|
|
|
throws ServletException, IOException {
|
|
|
String requestUri = request.getRequestURI();
|
|
|
String contextPath = request.getContextPath();
|
|
|
HttpSession session = request.getSession();
|
|
|
|
|
|
if (requestUri.indexOf("/login") != -1
|
|
|
|| requestUri.indexOf("/system/loginAction") != -1
|
|
|
|| requestUri.indexOf("/error") != -1
|
|
|
|| requestUri.indexOf("/test.jsp") != -1
|
|
|
|| requestUri.indexOf("/logoutAction") != -1
|
|
|
|| requestUri.indexOf(contextPath + "/static-dev") != -1
|
|
|
|| requestUri.indexOf(contextPath + "/develop") != -1
|
|
|
|| requestUri.indexOf(contextPath + "/rest") != -1
|
|
|
|| requestUri.indexOf(contextPath + "/process") != -1
|
|
|
|| requestUri.indexOf("swagger") != -1
|
|
|
|| requestUri.indexOf(contextPath + "/v2/api-docs") != -1
|
|
|
|| requestUri.indexOf("/tenant/delFile") != -1
|
|
|
|| requestUri.indexOf(contextPath + "/mobile") != -1) {
|
|
|
filterChain.doFilter(request, response);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
String requestUri = httpServletRequest.getRequestURI();
|
|
|
//
|
|
|
if (requestUri!=null && !requestUri.contains("/oauth2")) {
|
|
|
if (httpServletRequest.getSession(false) == null
|
|
|
|| httpServletRequest.getSession().getAttribute("userInfo") == null) {
|
|
|
if (requestUri != null && !requestUri.contains("/oauth2")) {
|
|
|
if (session == null || session.getAttribute("userInfo") == null) {
|
|
|
// AJAX REQUEST PROCESS
|
|
|
String attachment = LocalContext.getContext().getAttachment(ContextAttributes.TENANT_NAME);
|
|
|
if ("XMLHttpRequest".equalsIgnoreCase(httpServletRequest.getHeader("X-Requested-With"))) {
|
|
|
httpServletResponse.setHeader("sessionStatus", "timeOut");
|
|
|
httpServletResponse.getWriter().print("{}");
|
|
|
httpServletResponse.sendRedirect(httpServletRequest.getContextPath() + "/logoutAction");
|
|
|
if ("XMLHttpRequest".equalsIgnoreCase(request.getHeader("X-Requested-With"))) {
|
|
|
response.setHeader("sessionStatus", "timeOut");
|
|
|
response.getWriter().print("{}");
|
|
|
response.sendRedirect(request.getContextPath() + "/logoutAction");
|
|
|
return;
|
|
|
}
|
|
|
httpServletRequest.getSession().setAttribute("attachment",attachment);
|
|
|
httpServletResponse.sendRedirect(httpServletRequest.getContextPath() + "/" + attachment + "/loginPage");
|
|
|
request.getSession().setAttribute("attachment", attachment);
|
|
|
response.sendRedirect(request.getContextPath() + "/" + attachment + "/loginPage");
|
|
|
return;
|
|
|
}
|
|
|
} else if (requestUri.endsWith("/oauth2/autoLogin")) {
|
|
|
// 从医疗云平台自动登录共享交换平台,则session永不过期。避免过期后返回到共享交换平台登录页。
|
|
|
session.setMaxInactiveInterval(-1);
|
|
|
}
|
|
|
|
|
|
filterChain.doFilter(httpServletRequest, httpServletResponse);
|
|
|
filterChain.doFilter(request, response);
|
|
|
}
|
|
|
|
|
|
}
|