【web开发】★☆之基于Map实现(用户登录三次失败后)24小时之内限制登录!
2020-12-13 05:40
标签:登录失败限制用户登录 java实现失败三次限制登录 java实现登录失败后限制登录 【web开发】★☆之基于Map实现(用户登录三次失败后)24小时之内限制登录!
近期在改一个老项目(struts1做的),客户现在想实现如下效果,用户在登录失败三次之后,锁定用户,需要信息部管理人员进行解锁!我第一想法,是在其数据库User表中加一个字段,记录登录失败的次数,但是数据库添加字段需要远程操作数据库,而对方的数据库又被各种加密软件包围!不是很方便,所以想了一下解决方案,利用Map来进行处理! 首先说一个思路,新建实体类,只有两个属性,登录失败次数,登录时间,实现get,set方法! 如下:
第二步: 我们在登录login.action中new一个新的Map出来,如下 创建时间日历
当用户登录发出login.action之后,那么 至于,系统管理员怎么解锁账号,其实很简单,那就是在后台,将用户账号带着(这个应该不难吧)写一个方法! OK,到这里,基本上完成了用户的需求,至于漏洞,那就是服务器重启之后,登录失败信息就会消失,但是,项目上线之后除了非正常情况及需要维护情况下,服务器基本上不会停止的,所以,此方法还是可行的! 有意见,请举手!3Q! 本文出自 “诺言永远依恋小柴、、、” 博客,请务必保留此出处http://1936625305.blog.51cto.com/6410597/1412726 【web开发】★☆之基于Map实现(用户登录三次失败后)24小时之内限制登录!,搜素材,soscw.com 【web开发】★☆之基于Map实现(用户登录三次失败后)24小时之内限制登录! 标签:登录失败限制用户登录 java实现失败三次限制登录 java实现登录失败后限制登录 原文地址:http://1936625305.blog.51cto.com/6410597/1412726public class UserErrorLoginRecord {
private String loginTime;
private int errorNumber;
public String getLoginTime() {
return loginTime;
}
public void setLoginTime(String loginTime) {
this.loginTime = loginTime;
}
public int getErrorNumber() {
return errorNumber;
}
public void setErrorNumber(int errorNumber) {
this.errorNumber = errorNumber;
}
}
rivate static Map
Calendar nowDate = Calendar.getInstance();
UserErrorLoginRecord userError = null;
String account = loginForm.getAccount();//用户名
String password = loginForm.getPassword();//密码
userError = LOG_MAP.get(account);//通过用户名获取登录信息对象
if (userError == null) {
//如果查询出来的user对象为空,那么直接到user==null这个方法
user = this.usersService.checkLoginIn(account, MD5.generate(password));
} else {
String loginTime = userError.getLoginTime();
int loginNumber = userError.getErrorNumber();
//获取时间
String dateStr = String.valueOf(nowDate.get(Calendar.YEAR)) + (nowDate.get(Calendar.MONTH) + 1) + (nowDate.get(Calendar.DAY_OF_MONTH));
//如果现在不等于Map中存的登录时间(20140401)这种格式,那么显然时间已经过了24小时,那么根据用户名直接清除Map中的登录信息
if (!dateStr.equals(loginTime)) {
LOG_MAP.remove(account);
user = this.usersService.checkLoginIn(account, MD5.generate(password));
//否则就是判断如果登录次数小于3那么允许其查询user对象,否则直接将user设为空
} else {
if (loginNumber
userError = LOG_MAP.get(account1);//传过来的用户名
if(userError!=null){
int errNumber =userError.getErrorNumber();
if(errNumber!=0){
LOG_MAP.remove(account1);
}
文章标题:【web开发】★☆之基于Map实现(用户登录三次失败后)24小时之内限制登录!
文章链接:http://soscw.com/essay/31521.html