社区
Web 开发
帖子详情
如何用Java实现用户登录安全问题
youxi520131420
2010-05-25 11:30:40
我想实现一个功能,就是我的页面登录后,如果用户在另一个地方登录了,在这边会提示说“用户已经在别的地方登录”,然后在边被强制退出,请问该怎么实现(我是用JSP的)?就类似QQ,你的用户在别的地方登录,你就会下线,应该怎么做呢?
还有就是:如果一个用户如果连续三次密码输入错误,就要锁定该用户15分钟内不得登录,15分钟后自动解锁,请详细说一下该如何解决这两个问题,给个例子让我看一下,谢谢了!
...全文
1180
19
打赏
收藏
如何用Java实现用户登录安全问题
我想实现一个功能,就是我的页面登录后,如果用户在另一个地方登录了,在这边会提示说“用户已经在别的地方登录”,然后在边被强制退出,请问该怎么实现(我是用JSP的)?就类似QQ,你的用户在别的地方登录,你就会下线,应该怎么做呢? 还有就是:如果一个用户如果连续三次密码输入错误,就要锁定该用户15分钟内不得登录,15分钟后自动解锁,请详细说一下该如何解决这两个问题,给个例子让我看一下,谢谢了!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wang6953317
2012-10-18
打赏
举报
回复
不能用SESSION吧。 我觉得应该用上下文才行吧。
zuxianghuang
2012-10-18
打赏
举报
回复
spring-security很好实现
最美的词
2012-10-18
打赏
举报
回复
1楼的仁兄说的方法可以解决,lz不妨参考
学无止境-逆流而上
2012-10-18
打赏
举报
回复
[Quote=引用 4 楼 的回复:]
具体代码不用写了吧?呵呵!
不过,原理可以说一下,就通过session控制就好了,session里定义变量就可以了!第一个,一旦登录过了,一个boolean变量已经true了,自然就知道了!呵呵!
另一个,一样是在session里定义一个变量计数就可以了,呵呵!最简单就是这样了!
[/Quote]
仁兄考虑不周全,session存单点登录是不正确的,比较常用的是session与application结合使用,通过session获取与用户唯一性关联的sessionID(比如userid),存入application,以后比较的是application中有没有已经有的sessionID,详细见http://blog.csdn.net/itbasketplayer/article/details/8014727。
第二个的前提是用户名必须唯一,因为要以用户名锁定账户,你不能锁定跟你一样用户名的用户(所以很多系统都规定用户名必须唯一),然后是登录次数变量及登录时间必须记录在application中!
楼上的也说了,b/s模式没有办法,只能取最好的实现而不能完全媲美c/s模式下的这种实现。session不是万能的,也不是服务器可控的,而application才是服务器可控对象。
yrsheng
2012-10-17
打赏
举报
回复
前面有人说保存session就可以了?那重启浏览器、换一台机就解除锁定了?
定时器可以不要,但登录错误次数必须保存,还要有账号是否锁定标志。
关键我是洛哥
2012-10-17
打赏
举报
回复
[Quote=引用 13 楼 的回复:]
关于强制下线问题:建立一个全局的Map
1.验证登陆 验证成功 判断用户是否在Map中
---如果不在Map中 将该用户名和session放到Map中
---如果在Map中 将session取出置为非法session ,将新session放入Map中
至于提醒 : 可以用Ajax 不过有点麻烦
[/Quote]
关于用户输入密码错误问题可以提供一个解决方案:
第一次登陆时不用验证码 如果登陆出错 继续登陆就用户输入验证码
这样做有两个原因:1.如果是人为登陆 他就算是在试探密码 给出 输入也很慢 用户账户是安全的
2.如果是恶意程序 它不能识别验证码 用户账户是安全的
所以这个方案是很好的解决方案
关键我是洛哥
2012-10-17
打赏
举报
回复
关于强制下线问题:建立一个全局的Map
1.验证登陆 验证成功 判断用户是否在Map中
---如果不在Map中 将该用户名和session放到Map中
---如果在Map中 将session取出置为非法session ,将新session放入Map中
至于提醒 : 可以用Ajax 不过有点麻烦
宁波朱超
2012-10-17
打赏
举报
回复
常用做法是SESSION对输入的账户计数。
sgyyz
2012-07-04
打赏
举报
回复
session判断,正解……
lele140
2010-05-28
打赏
举报
回复
个人感觉 4 楼的大哥说的比较好,赞同一下。期待高手的回答。。。。
x_pengcheng
2010-05-25
打赏
举报
回复
学习。
很久之前就开始了
2010-05-25
打赏
举报
回复
单点登录 CAS
http://www.blogjava.net/xcp/archive/2010/04/13/318122.html
fossette
2010-05-25
打赏
举报
回复
study
phoenixYiYou
2010-05-25
打赏
举报
回复
具体代码不用写了吧?呵呵!
不过,原理可以说一下,就通过session控制就好了,session里定义变量就可以了!第一个,一旦登录过了,一个boolean变量已经true了,自然就知道了!呵呵!
另一个,一样是在session里定义一个变量计数就可以了,呵呵!最简单就是这样了!
Jay_+wqq_635731323
2010-05-25
打赏
举报
回复
这个问题不错,学习中
stl0
2010-05-25
打赏
举报
回复
to beblong:第一个问题,我认为没有必要设置定时器,当后者在其他地方登陆后,前者继续操作(request)的时候,进行判断就可以了啊
焙焙龙
2010-05-25
打赏
举报
回复
第一个问题,由于BS结构的特点是基于请求和应答的,换句话说,服务器处于被动位置,客户浏览器处于主动为止,如果你不主动发出请求,服务器是不会鸟你的,或者说,服务器根本就不知道你是谁!
要想实现你的需求,可以在JSP页面放置一个定时器,用JavaScript搞,通过Ajax异步请求服务器,做登录状态轮询,如果发现在别的地方登录了,强制下线。
这样的话,就需要一个状态保存的容器,这个自己去搞吧,实现方案很多的。
第2个问题就更简单了,登录失败时,修改计数器的值,例如设置为错误3次就锁定,那么没错误一次就减1,到0就不让登了呗,然后启动一个解锁定时器线程,在设定的时间后将这个值修改成3
这些参数都是可以人为设定的
我就讲到这,其余的你自己自由发挥吧
JAVA
_API1.6文档(中文)
java
x.rmi.ssl 通过
安全
套接字层 (SSL) 或传输层
安全
(TLS) 协议提供 RMIClientSocketFactory 和 RMIServerSocketFactory 的
实现
。
java
x.security.auth 此包提供用于进行验证和授权的框架。
java
x.security.auth....
企业进销存管理系统
java
全套源代码
本系统
实现
目标如下: 界面设计简洁、友好、美观大方。 操作简单、快捷方便 数据存储
安全
、可靠。 信息分类清晰、准确。 强大的查询功能,保证数据查询的灵活性。 提供销售排行榜,为管理员提供真实的数据信息。 ...
java
实现
用户登录
异常统计、锁定及解锁功能
java
实现
用户登录
异常统计、锁定及解锁功能
Java
实现
登录功能(一)
Java
实现
登录功能(一) 文章目录
Java
实现
登录功能(一)前言一、Token的认证流程及优点二、JWT1.MySQL2.Tomcat3.Redis4.Mongo5.Nacos6.RabbitMQ7.ElasticSearch8.Kibana总结 前言 刚开始学习
Java
的时候,你是否有...
Java
用户登录
界面的代码
本文将介绍如何使用
Java
编写一个
用户登录
界面的代码,以及如何
实现
安全
的用户认证系统。通过以上代码示例和描述,你可以开始构建一个基本的
Java
用户登录
界面,并
实现
一个
安全
的用户认证系统。,则登录失败,你可以在...
Web 开发
81,092
社区成员
341,717
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章