java重复登录问题

lenhan12345 2009-09-16 10:16:54
我有一个登录页面login.jsp,登录成功后,把用户相关的信息放到了session里面,用时再取出,但是我加外再开一个ie,用登录成功后的用户名和密码同样的可以登录,我希望登录成功之后,相同的用户只能登录一次,怎么实现,说说思想。。。。
...全文
1249 43 打赏 收藏 转发到动态 举报
写回复
用AI写文章
43 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangyu093305 2012-04-06
  • 打赏
  • 举报
回复
或者设置一个sessionId 登录成功时则给sessionId分配一个值,第二个人再登录同一个用户时再给sessionId分配一个值,第一个人执行操作时区数据库中查sessionId的值,如果和第一次分配的不一致,则提示已有用户登录!!!你还可以用ajax。但是对服务器负载太大,不推荐!!!如果找到什么,好的解决办法,希望你能告诉我一声,我也想学习一下!!!
zhangyu093305 2012-04-06
  • 打赏
  • 举报
回复
可以在数据表中加个字段,online (boolean) 登录成功了就把online更新成true 否则就是false 默认值为false 登录成功后,有第二个人登录这个账号时在数据表中查询online 如果为true则提示账号已登录。如果为false正常校验!!!
授捕鸟 2012-03-14
  • 打赏
  • 举报
回复
解决了没啊?
努力 2009-09-22
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 dbx915 的回复:]
在放入Session 之前可以先判断一下当前登录是否与Session 中的值一样,如果一样就不能再登录了
[/Quote]
如果是两台机子用一个账户登陆呢?没考虑过吧?session不就没用了吧。
yekai012 2009-09-22
  • 打赏
  • 举报
回复
楼上,从聊天室的角度去考虑吧。哈哈,应该可以。
palosky 2009-09-22
  • 打赏
  • 举报
回复
这个问题很厉害 光靠session 过滤器 监听器 flag=1或者0
根本无法实现!你想啊 要考虑的情况太多了!
(1)flag=1 或者0 断电了怎么办?突然断网怎么办?(小项目无所谓 大项目那就惨了)
(2)session 我不一定非要打开一个浏览器啊 有可能开很多呢 有可能IE FireFox 多面操作呢?
(3)监听器 过滤器等。那你怎么控制用户在线时间呢?况且还有很多突发事件呢?

这个问题我目前没有头绪,而且也遇到好几回了,解决不了!希望大家都能出谋划策啊……
实在不行,就当聊天,锻炼一下文笔……
albb0608 2009-09-22
  • 打赏
  • 举报
回复
可不可以考虑一下单线程
lenhan12345 2009-09-22
  • 打赏
  • 举报
回复
谢谢各位高手了,我正在试。呵呵。。我现在写了一个过滤器,是用来限制用户必须登录的
就是用户如果不进行登录页面,就强制先登录。但是现在有个问题,我所以的页面都在项目下,
包括后台我前台的所有页面,但是我只限制后台,如果用了这个过滤器,就连前台也被强制到登录页面了
<filter>
<filter-name>checkLoginFilter</filter-name>
<filter-class>com.dbl.db.CheckLoginFilter</filter-class>
<init-param>
<param-name>logonStrings</param-name>
<param-value>login.jsp</param-value>
</init-param>
<init-param>
<param-name>includeStrings</param-name>
<param-value>.jsp;.html</param-value>
</init-param>
<init-param>
<param-name>redirectPath</param-name>
<param-value>/login.jsp</param-value>
</init-param>
<init-param>
<param-name>disabletestfilter</param-name>
<param-value>Y</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>checkLoginFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
这是配置文件。但是我只想对后的一些文件起作用,前台网站文件可以正常使用。应当怎么样设置
关键是现在已经全部完成,如果再分目录会很麻烦。。。。。应当怎么处理一下。。。。。。。
cgh45 2009-09-21
  • 打赏
  • 举报
回复
楼主可以试下做两个界面,一个是普通的登录页面,一个是强制登录页面,同时数据库加个两个标志位:login_flag,code(每次登录成功时自动生成值)。
第一次登的时候将login_flag置1,同时自动生成一个code分别保存在数据库和客户端;
第二次在普通页面登录时,判断数据库中login_flag是否为1,为1的话跳转到强制登录页面,提示用户是否强制登录;如果是在强制登录页面登录,判断是否已经登录,未登录新生成一个code,已登录则把数据库中code改为此次登录生成的code,login_flag置1。
登录系统后,每执行一个操作,就判断客户端的code是否跟数据库的一样,不一样跳转到强制登录页面。
当然你正常退出的话要把数据库的login_flag置0,code清空。
kaynezhang 2009-09-21
  • 打赏
  • 举报
回复
把登陆的ID放在application 范围内,然后使用SessionListener
longtenggdf 2009-09-21
  • 打赏
  • 举报
回复
还是在数据可加个字段吧。
longtenggdf 2009-09-21
  • 打赏
  • 举报
回复
楼主没有明白什么是session~
pengrong 2009-09-21
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 lenhan12345 的回复:]
前面讨论的贴子没有解决实际问题呀。。。
有人说到struts令牌,,,,有人懂吗?个人觉得这个应当不错.
[/Quote]
struts令牌是防止数据重复提交的,就在表中加个字段,再弄一session监听器 就ok
baoisflying 2009-09-21
  • 打赏
  • 举报
回复
使用监听器。用户一登陆时,就把用户设置到session中,session里有个validate方法。当调用这个方法时。就把这个用户remove掉。
yekai012 2009-09-21
  • 打赏
  • 举报
回复
还没完事啊,建议先弄明白HTTP协议原理和Session原理吧。
-----在规范内做事:超越了规范,只能加一些技巧,但不可能超越规范。
ctlu2ct2t 2009-09-19
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 apollo_ts 的回复:]
原来是单点登陆

这个很复杂,问题也很多,即是SPRING这样的开源英雄也是使用中间平台,看http://www.jasig.org/cas
[/Quote]
顶这个吧!!!
lenhan12345 2009-09-19
  • 打赏
  • 举报
回复
设置数据库字段是不现实原,如果不正常退出的话,是不是这个字段的值就没变过来。那么是不是上次就不能登录了????????有没有类似QQ的那种方法,后来的人把前面的人踢下去,具体怎么实现呢?
dbx915 2009-09-19
  • 打赏
  • 举报
回复
在放入Session 之前可以先判断一下当前登录是否与Session 中的值一样,如果一样就不能再登录了
qx8668 2009-09-19
  • 打赏
  • 举报
回复
用AJAX+SESSION监听器

我以前这样实现过,但JS毕竟是客户端还是会出事情,

所以SESSION生命期就搞个10秒吧

但比JS关闭窗体执行代码好多了,用数据库的可以说是最最烂的方法
juyang0303 2009-09-18
  • 打赏
  • 举报
回复
这个简单,在用户表里设置一个登陆状态,第一次登陆成功时状态改为1,否则(session失效)为零,这样就行了
加载更多回复(23)

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧