设置session实效时间问题1

本文介绍了一种基于Web的应用程序会话管理方法,包括在web.xml中配置会话超时时间及通过自定义过滤器实现对特定路径的安全控制。此外,还详细展示了如何在过滤器中进行用户身份验证和会话重建等操作。
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();
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值