用session也许可以阿,登陆后,把客户端的ip写入session
解决方案 »
- ssh2 action中的list如何转换成json然后传递给extjs tree 请高手帮忙 如何写action和extjs呀
- 关于在JBPM4.4AssignmentHandler中获取session
- Strut2 + Jquery 数据传输到前台网页的问题
- 基于Java GUI的日历式备忘录系统的设计与实现
- @Entity 类中取得被映射成主键的属性
- limitclear这种人也配当程序员?4
- 严重: java.lang.NoSuchMethodError: org.jdom.input.DOMBuilder.build
- Spring Hibernate 配置问题
- 环境:JBOSS3+SQLSERVER;异常:(javax.ejb.EJBException: Can't start a cloned connection while in manual transaction mode)高手救
- Java 中 匹配大量tag标签... 求解决效率的方法
- 使用javamail发送完邮件后怎样在程序中做一些清理工作?
- 请问进行一般的开发J2EE,Eclipse要装些什么
不过用户如果用代理服务器上的话,还是会出现问题的!你可以在用户登陆后,在session中放一个标志位,如果在别的机器上这个用户的帐号又被登陆的时候,你就可以判断了,也就是说判断seesion中的标志位是否存在,如果已经存在的话就不让他登陆
我怎么样才能限制这种情况呢,只要那个用户登录了,就不允许他在其它机器上登录了
---------------------------------------我感觉这样设计是有问题的,你试想一下,如果用户非法关闭,你可以通过session被破坏的时候把flag设置为离开,但是用户需要等很长时间!我原来搞oa的时候就出现这样的问题,尤其是一些3721之类的东西,因为登陆是全屏,所有会有弹出,但是这些软件会过滤掉,实际上已经登陆上去了,flag也设置为1了,但是就是看不到页面,再重新登陆就需要等到session认为你已经自动退出那个时刻了.很麻烦!感觉应该是全都可以登,但是有一个登陆上以后,会把原来的踢出下线,qq就是这样设计的
或者是半小时一次,一天一次等。
实现方法 /**
* 当用户创建一个会话时,将用户该对象实力放入到再现用户列表中
* @param event
*/
public void valueBound(HttpSessionBindingEvent event) {
boolean dup = false;
for (int i = 0; i < UserSession.userList.size(); i++) {
UserSession u = (UserSession) UserSession.userList.get(i);
if (u != null
&& u.getUserName() != null
&& u.getUserId().equals(
this.getUserId())) { // forbid add a duplicate user
dup = true;
}
}
if (!dup) {
UserSession.userList.add(this);
}
System.out.println(this.userId + " added into userlist");
}
/**
* 当用户会话失效时,在再现用户表中将该对象实力删除
* @param event
*/
public void valueUnbound(HttpSessionBindingEvent event) {
UserSession.userList.remove(this);
System.out.println(this.userId + " remove from userlist");
}