起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7800|回复: 6

[处理中3] 登录错误超3次锁定如何实现?

[复制链接]

58

主题

210

帖子

639

积分

高级会员

Rank: 4

积分
639
QQ
发表于 2019-6-11 19:23:16 | 显示全部楼层 |阅读模式
版本: X5.2.7 小版本号:
数据库: MS SQLServer 服务器操作系统: Windows 应用服务器: Tomcat
客户端操作系统: Windows 7 浏览器: Chrome
假如我在验证登录时,设定为3次,超过3次将帐号锁定一定的时间,防止系统易被暴力破解的问题,防止穷举破解。请问,在BeX5如何实现呢?

12

主题

2627

帖子

2866

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2866
发表于 2019-6-11 19:57:04 | 显示全部楼层
基本思路: 在BIZ的登录逻辑中,判断是否是“用户名或密码”错误, 如果是的话, 此处根据登录用户名记录错误的次数(一段时间内),如果超出三次后, 阻止登录(比如同一个账号半个小时后才能登录);
具体实现: 代码插入点:/BIZ/system/logic/code/dsrc/OPMProcedure.java, 找到其中的login方法(注意有好几个login方法,只需要修改参数一致的)
        private static Object login(String name, Date loginDate, String pwd, String lang, boolean checkPwd, String ip, Map<Object, Object> options) {               
               //添加检查是否超出用户名和密码次数限制                              
                            try{
                        //将login原来的逻辑复制到这里
                }catch(BusinessException e){
                        String code = e.getCode();
                        if (BusinessMessages.NAME_PASSWORD_ERROR.equals(code)){
                                //此处实现记录用户名和密码超出次数
                                System.out.println("用户名或密码错误");
                        }
                        throw e;
                }
        }




回复 支持 反对

使用道具 举报

12

主题

2627

帖子

2866

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2866
发表于 2019-6-11 19:59:38 | 显示全部楼层
如何记录同一个账号一个时间段内登录出错的次数, 如果没有集群的话, 可以直接使用全局静态变量来记录这个状态信息; 如果有集群的话, 可以用数据库表来记录;
回复 支持 反对

使用道具 举报

58

主题

210

帖子

639

积分

高级会员

Rank: 4

积分
639
QQ
 楼主| 发表于 2019-6-13 09:20:51 | 显示全部楼层
昨天按照帖子里的方法实现了3次登录失败即禁用账号,并在测试环境生效,可以弹框显示后台的throw new RuntimeException内容。但是,由于正式环境是从我们的统一平台跳转登录的,登录失败会自动跳回统一平台:改造login.w如下图。造成弹框没有显示,请问可以怎么处理呢?

login2.png
login1.png
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35962
发表于 2019-6-13 09:45:27 | 显示全部楼层
用了统一登录平台就相当于登录是在这个页面上实现的,要看这个页面中怎么实现弹出框提示

平台默认的提示框是在登录按钮的调用的方法中实现的

login.png





远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

58

主题

210

帖子

639

积分

高级会员

Rank: 4

积分
639
QQ
 楼主| 发表于 2019-6-13 16:49:12 | 显示全部楼层
我们现在的登录方式是从自己的统一平台直接跳转至如下地址:http://192.168.99.15:8080/x5/UI2/v_/portal/pc/index.w?username="+ userid + "&password=" + spassword + "&loginDate=" + DateTime.Now.ToString("yyyy-MM-dd")
登录成功,则直接打开首页;登录失败,则跳转至登录界面。现在只能定位到:login.j中登录失败return,随后加载login.w。请问,此时login.w是在哪里触发打开的呢?
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35962
发表于 2019-6-13 16:54:15 | 显示全部楼层
/UI2/portal/pc/index.w的model的onload事件中调用的showLoginDialog,在js文件看showLoginDialog方法的具体实现

login.png

远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-6-15 09:19 , Processed in 0.070880 second(s), 28 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表