• 大小: 1KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-10
  • 语言: 其他
  • 标签:

资源简介

如果用户没有登陆,则登陆,并将登陆信息放到application, 信息为用户id,用户sessionid,用户登陆时间,登陆IP 如果用户已登陆,则每次请求要检查application, 一旦用户id相同而sessionid不同,即表明该用户在其它地方登陆, 当前登陆无条件注销 注销过程为:将当前session失效,转到登陆页面, 提示用户该用户id已在哪台机器什么时间登陆了,当前登陆已注销 web.xml添加filter: SingleFilter org.com.filter.SingleFilter SingleFilter /*

资源截图

代码片段和文件信息

package org.com.filter;

import java.io.IOException;
import java.util.Map;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.log4j.Logger;
import org.com.command.role.GoupdateRoleCmd;

public class SingleFilter implements Filter {
private static Logger log = Logger.getLogger(SingleFilter.class);
private FilterConfig filterConfig;

public void doFilter(ServletRequest req ServletResponse res
FilterChain chain) throws IOException ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
HttpSession session = request.getSession();

/**
 * 如果用户没有登陆,则登陆,并将登陆信息放到application,
 * 


 * 信息为用户id,用户sessionid,用户登陆时间,登陆IP
 * 


 * 如果用户已登陆,则每次请求要检查application,
 * 


 * 一旦用户id相同而sessionid不同,即表明该用户在其它地方登陆,
 * 


 * 当前登陆无条件注销
 * 


 * 注销过程为:将当前session失效,转到登陆页面,
 * 


 * 提示用户该用户id已在哪台机器什么时间登陆了,当前登陆已注销
 */
boolean isLogin = session.getAttribute(“NAME“) != null;
log.info(“----SingleFilter.isLogin = “+isLogin);
if (isLogin) {
String username = (String) session.getAttribute(“NAME“);
String curSessionid = session.getId();
Map single = (Map) session.getAttribute(
“single“);
if (single == null) {
log.info(“----SingleFilter single == null : “+single == null);
return;
}
Map userMap = (Map) single.get(username);
// 如果已经有登陆信息
if (userMap != null) {
log.info(“----SingleFilter.userMap != null“);
String hisSesssionid = (String) userMap.get(“sessionid“);
String ip = (String) userMap.get(“ip“);
String date1 = (String) userMap.get(“date1“);
if (!curSessionid.equals(hisSesssionid)) {
String jspMess = username + “已于“ + date1 + “从“ + ip
+ “登陆到了服务器上,当前登陆已被注销!“;
request.setAttribute(“ERROR“ jspMess);
session.removeAttribute(“NAME“);
session.invalidate();
filterConfig.getServletContext().getRequestDispatcher(
“/main.jsp“).forward(request response);
return;
}
log.info(“----SingleFilter.hisSessionid not null!“);
}
}

chain.doFilter(request response);
}

public void destroy() {
}

public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
}

}


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        2802  2009-01-07 16:45  SingleFilter\SingleFilter.java

评论

共有 条评论

相关资源