软件开发专业网

15837636235

地址:无锡国家软件园
网 址:www.javaandc.com
邮 箱:renaide#126.com
手  机:15837636235
邮  编:100000
传 真:15837636235

java技术 > java 实现 一个账号只能在一个地方登陆

java 实现 一个账号只能在一个地方登陆
发布时间:2015-08-16 新闻来源:软件开发专业网 浏览次数:892000

   软件开发专业网发现了在使用理解java 四大作用域。

 
  思路:理解java 四大作用域的关键。
 
  第一个地方登陆:
 
  1.得到请求的SessionId 和 登陆的 用户名
 
  2.把SessionId 存到application里,用户名存到当前session里
 
  ActionContext ac = ActionContext.getContext();
 
  Map<String, Object> applicationMap=ac.getApplication();
 
  Map<String, Object> sesisonMap = ac.getSession();
 
  //请求的sessionId
 
  String currentSeesionId= getRequest().getSession().getId();
 
  applicationMap.put(loanUserE.getUname(), currentSeesionId);
 
  sesisonMap.put(CommonVar.SSO_LOGIN_NAME_KEY,loanUserE.getUname());
 
  第二个地方登陆:
 
  1.获取浏览器的  SessionId 和取得  登陆的用户名
 
  2.在当前的session 里取得  用户名对应的关键字  ,用关键字在application里获取SessionId ,
 
  作比较,不相等就跳到登陆。
 
  拦截器:
 
  /** 初始化参数获得 */
 
  ActionContext actionContext = arg0.getInvocationContext();
 
  /** HttpServletRequest参数 */
 
  HttpServletRequest request = (HttpServletRequest) actionContext.get(StrutsStatics.HTTP_REQUEST);
 
  /** HttpServletResponse参数 */
 
  HttpServletResponse response = (HttpServletResponse) actionContext.get(StrutsStatics.HTTP_RESPONSE);
 
  /** Session参数 */
 
  Map<String, Object> sessionMap = actionContext.getSession();
 
  Map<String, Object> appcationMap = actionContext.getApplication();
 
  String loginName = null;
 
  // 上下文对象中的sessionId
 
  String sessionId = null;
 
  if (!sessionMap.isEmpty()) {
 
  loginName = (String) sessionMap.get(CommonVar.SSO_LOGIN_NAME_KEY);
 
  }
 
  if (null != loginName) {
 
  sessionId = (String) appcationMap.get(loginName);
 
  }
 
  // 当前会话的sessionId
 
  String currentSessionId = request.getSession().getId();
 
  if (!currentSessionId.equals(sessionId)) {
 
  return "loanUserLogin";
 
  }
首页