其实方法有很多的,我这献丑了。

使用理解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";
}

java 实现 一个账号只能在一个地方登陆,其他地方被下线的更多相关文章

  1. asp.net mvc 简单实现一个账号只能在一个地方登录

    原理:  假设用户在机器A登陆后,  这时用户再次在机器B登陆,会以当前会话的SessionID作为键,用户id作为值,插入dictionary集合中,集合再保存在application(保存在服务器 ...

  2. SpringMVC实现账号只能在一处登陆

    一.问题引导 在Web开发中,实现一个账号只能在一处登陆有两种形式:1.当某个账号在某处登陆后,如果再在其他处登陆,将前一个账号挤掉:2.当某个账号登陆后,此账号在其他设备登陆提示已经登陆,无法登陆. ...

  3. 用java实现一个简单的单用户登陆功能的思路

    引用 所谓“单用户单账户登录”是指:在同一系统中,一个用户名不能在两个地方同时登录. 我们参照 QQ 实现效果:当某账号在 A 处登录后,在未退出的情况下,如果再到 B 处登录,那么,系统会挤下 A ...

  4. HDU 3594 Cactus (强连通分量 + 一个边只能在一个环里)

    题意:判断题目中给出的图是否符合两个条件.1 这图只有一个强连通分量 2 一条边只能出现在一个环里. 思路:条件1的满足只需要tarjan算法正常求强连通分量即可,关键是第二个条件,我们把对边的判断转 ...

  5. php实现同一时间内一个账户只允许在一个终端登陆

    在账户表的基础上,我新建了一个账户account_session表,用来记录登录账户的account_id和最新一次登录成功用户的session_id,然后首先要修改登录方法:每次登录成功后,要将登录 ...

  6. FineReport:任意时刻只允许在一个客户端登陆账号的插件

    在使用FineReport报表系统中,处于账户安全考虑,有些企业希望同一账号在任意时刻智能在统一客户端登录.那么当A用户在C1客户端登陆后,该账号又在另外一个C2客户端登陆,服务器如何取判断呢? 开发 ...

  7. 一个区域只能放置一个组件,如果想在一个区域放置多个组件就需要使用Panel来装载

    五种布局管理器: Flow Layout(流式布局):按照组件添加到容器中的顺序,顺序排放组件位置.默认为水平排列,如果越界那么会向下排列.排列的位置随着容器大小的改变而改变. Panel默认的布局管 ...

  8. java保持同一时间同一账号只能在一处登录

    //登录页面 login.jsp <%@ page language="java" contentType="text/html; charset=UTF-8&qu ...

  9. Java文件中为什么只能有一个public修饰的类, 并且类名还必须与文件名相同

    当编写一个java源代码文件时,此文件通常被称为编译单元(有时也被称为转译单元).每个编译单元都必须有一个后缀名.java,而在编译单元内则可以有一个public类,该类的名称必须与文件的名称相同(包 ...

随机推荐

  1. padding-bottom布局解析;

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. BoundsChecker使用

      转载:http://www.cnitblog.com/qiuyangzh/archive/2005/07/14/975.html 1 前言 我在本文中具体介绍了測试工具NuMega Devpart ...

  3. Cocos2D-x权威指南:核心类成员CCNode

    节点类(CCNode)是Cocos2D-x中的主要类,继承自CCObject.继承关系如图3-2所看到的. 不论什么须要画在屏幕上的对象都是节点类. 最经常使用的节点类包含场景类(CCScene).布 ...

  4. Python之lxml

    作者:Shane 出处:http://bluescorpio.cnblogs.com lxml takes all the pain out of XML. Stephan Richter lxml是 ...

  5. 【原】浅谈Firefox下的js、css、图片阻塞现象(一)

    外部js文件阻塞body中的图片 以如下html为例: <!DOCTYPE HTML> <html> <head> <meta http-equiv=&quo ...

  6. .net 文件下载

    /** 输入参数* _Request: Page.Request 对象* _Response: Page.Response 对象* _fileName: 下载文件名* _fullPath: 带文件名下 ...

  7. MATLAB中return和break

    return: RETURN Return to invoking function. RETURN causes a return to the invoking function or to th ...

  8. U盘安装CentOS6.x报错:Missing ISO 9660 Image

    以前都是DVD安装CentOS,这次因为装固态硬盘,然后把光驱给卸载了.所以就尝试用U盘引导安装CentOS,结果安装时竟然出现了Missing ISO 9660 Image的错误. 解决方案: 将C ...

  9. SDOI2008 Sandy的卡片( 后缀数组 )

    求出后缀数组, 然后二分答案, 对height数组分组检验答案. 时间复杂度O(|S| log|S|) ------------------------------------------------ ...

  10. [C#参考]主线程和子线程之间的参数传递

    几个进程在大多数情况下要包含很多的子线程,那么他们之间免不了的要互相传递很多的参数,那么参数怎么传递的呢? 主线程向子线程传递参数的方法 第一种方法:Thraed类有一个带参数的委托类型的重载形式,这 ...