1
在web.xml中设置时间
<session-config>
<session-timeout>300</session-timeout>
</session-config>
2 过滤器设置(过滤system访问目录下的如:tcps/system/。。。)
<filter-mapping>
<filter-name>Rqsauthfilter</filter-name>
<url-pattern>/system/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>Rqsauthfilter</filter-name>
<filter-class>
com.***.it.tcps.user.action.RqsAuthFilter
</filter-class>
</filter>
3 Rqsauthfilter 中加入逻辑
public void doFilter(
ServletRequest req,
ServletResponse resp,
FilterChain chain)
throws ServletException, IOException {
try {
UserInfoBean uiBean = null; //用户ID
boolean isdownusetool = false;
String logFlag = null;
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp;
String encoded = null;
encoded = request.getHeader("Authorization");
logger.info("encoded " + encoded);
logFlag = getCookieValue(request, LoginConstants.LOGIN_FLAG);
logger.info("log Flag is " + logFlag);
isdownusetool = isUseTool(request, encoded);
if (logFlag == null) {
redirect2Login(request, response);
return;
} else {
if (logFlag.equals("in")) {
if (!isUserLogin(request, logFlag)) {
logger.info("not login ");
boolean isRebuildSuccess = false;
isRebuildSuccess = rebuildSession(request, logFlag);
if (isRebuildSuccess) {
HttpSession session = request.getSession(false);
String host=request.getRemoteAddr();
String hostIp=request.getRemoteHost();
if (session == null)
session = request.getSession(true);
//判断是否同一个uid
if (session != null
&& !getAttributeValue(
request,
LoginConstants.LOGIN_USER_ID,
logFlag).equalsIgnoreCase(
String.valueOf(
session.getAttribute(
LoginConstants.LOGIN_USER_ID)))) {
killCookie(request, response);
redirect2Login(request, response);
return;
}
//saveCookie(request, response);
} else {
killCookie(request, response);
request.getSession().invalidate();
redirect2Login(request, response);
return;
} //end rebuildSession
} //end if Login in co-site
} else if (logFlag.equals("out") || !logFlag.equals("in")) {
HttpSession session = request.getSession(false);
if (session != null) {
session.setAttribute(
LoginConstants.LOGIN_USERINFO,
null);
session.invalidate();
}
killCookie(request, response);
redirect2Login(request, response);
return;
}
}
logger.info("logined step base action ");
chain.doFilter(req, resp);
} catch (Exception ex) {
ex.printStackTrace();
}
}
在web.xml中设置时间
<session-config>
<session-timeout>300</session-timeout>
</session-config>
2 过滤器设置(过滤system访问目录下的如:tcps/system/。。。)
<filter-mapping>
<filter-name>Rqsauthfilter</filter-name>
<url-pattern>/system/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>Rqsauthfilter</filter-name>
<filter-class>
com.***.it.tcps.user.action.RqsAuthFilter
</filter-class>
</filter>
3 Rqsauthfilter 中加入逻辑
public void doFilter(
ServletRequest req,
ServletResponse resp,
FilterChain chain)
throws ServletException, IOException {
try {
UserInfoBean uiBean = null; //用户ID
boolean isdownusetool = false;
String logFlag = null;
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp;
String encoded = null;
encoded = request.getHeader("Authorization");
logger.info("encoded " + encoded);
logFlag = getCookieValue(request, LoginConstants.LOGIN_FLAG);
logger.info("log Flag is " + logFlag);
isdownusetool = isUseTool(request, encoded);
if (logFlag == null) {
redirect2Login(request, response);
return;
} else {
if (logFlag.equals("in")) {
if (!isUserLogin(request, logFlag)) {
logger.info("not login ");
boolean isRebuildSuccess = false;
isRebuildSuccess = rebuildSession(request, logFlag);
if (isRebuildSuccess) {
HttpSession session = request.getSession(false);
String host=request.getRemoteAddr();
String hostIp=request.getRemoteHost();
if (session == null)
session = request.getSession(true);
//判断是否同一个uid
if (session != null
&& !getAttributeValue(
request,
LoginConstants.LOGIN_USER_ID,
logFlag).equalsIgnoreCase(
String.valueOf(
session.getAttribute(
LoginConstants.LOGIN_USER_ID)))) {
killCookie(request, response);
redirect2Login(request, response);
return;
}
//saveCookie(request, response);
} else {
killCookie(request, response);
request.getSession().invalidate();
redirect2Login(request, response);
return;
} //end rebuildSession
} //end if Login in co-site
} else if (logFlag.equals("out") || !logFlag.equals("in")) {
HttpSession session = request.getSession(false);
if (session != null) {
session.setAttribute(
LoginConstants.LOGIN_USERINFO,
null);
session.invalidate();
}
killCookie(request, response);
redirect2Login(request, response);
return;
}
}
logger.info("logined step base action ");
chain.doFilter(req, resp);
} catch (Exception ex) {
ex.printStackTrace();
}
}