java 同一浏览器_java web实现同一账号在不同浏览器不能同时登录

本文介绍了如何使用Java实现Web应用中同一账号在同一时间只能在一个浏览器登录的功能。主要利用session监听器,对用户登录状态进行管理,包括登录时检查已有状态、注销已登录用户、处理浏览器关闭情况,并提供了一种不依赖用户主动注销的方案。
摘要由CSDN通过智能技术生成

网上看了很多方法,个人也看了,自己也总结了几个比较常用的:

前提都是用session监听器,对session的创建与销毁进行监听

一、在用户登录时保存该用户的状态有这几种保存方式:

1、保存到内存中(application ,servletcontext ,个人也是推荐这种方式)

2、保存状态到数据库,至于具体的怎么保存你可以随意返回,如:0,1两种状态

3、保存到文件中,对文件的读写

以上是登录用户的状态,这对于大家来说都没有什么问题。

二、 这时如果同一用户登录了,你可以在登录成功后(保存信息之前)进入到上面的状态 中进行匹配判断,如果存在就提醒此用户你的账号已登录。

三、关键在于该用户的销毁

invliate(),调用这个方法,通过Session的监听器,进行对当前用户的删除。

Session过期,也会调用Session监听器。

讨论最多的就是在比如用户没有自己去注销session.invalidate()方法,而是直接关闭了 浏览器,这时怎么办?(浏览器关闭半个小时候,默认注销session,监听器这时才调用sessionDestroyed方法)。

首先要明确的一点,用户关闭浏览器,服务器端是无法得知的(因为web客户浏览器与服务器之间是无状态的),网上也有一些解决方案,比如通过js来判断用户是否关闭了浏览器,是的次方法可行,但是如果用户操作时,打开了多个窗口呢,这里也有方法:

1、一个方法还是比较好的,通

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值