java 密码登录输入错误4次,锁定用户账号30分钟
Map err = new HashMap();
if (!checkLock(session, UserId)) {err.put("err", false);err.put("msg", "该账号已被锁定,请30分钟后重试!");
} else {if (用户名及密码匹配) {err.put("err", true);err.put("msg", "登录成功!");// 清空登录失败记录cleanFailNum(session, UserId);} else {// 新增登录失败记录String msg = addFailNum(session, UserId);err.put("err", false);err.put("msg", msg);}
}/*** 校验用户登录失败次数* @param session* @param userId* @return*/
private boolean checkLock(HttpSession session,String userId) {Object o = session.getServletContext().getAttribute(userId);if(o == null) {return true;}HashMap map = (HashMap) o;int num = Integer.parseInt(Pub.IsNull(map.get("num")));Date date = (Date) map.get("lastDate");long timeDifference = ((new Date().getTime() - date.getTime()) / 60 / 1000);if(num >= 4 && timeDifference < 30) {return false;}return true;
}/*** 新增用户登录失败次数* @param session* @param userId*/
private String addFailNum(HttpSession session, String userId) {Object o = session.getServletContext().getAttribute(userId);HashMap map = null;int num= 0;if(o == null) {map = new HashMap();}else {map = (HashMap) o;num = Integer.parseInt(Pub.IsNull(map.get("num")));Date date = (Date) map.get("lastDate");long timeDifference = ((new Date().getTime() - date.getTime()) / 60 / 1000);if(timeDifference >= 30) {num = 0;}}map.put("num", num+1);map.put("lastDate", new Date());session.getServletContext().setAttribute(userId, map);String returnStr = "";if (0 != 4-(num+1)) {returnStr = "密码错误,您还有"+(4-(num+1))+"次机会!";} else {returnStr = "该账号已被锁定,请30分钟后重试!";}return returnStr;
}/*** 清理用户登录失败的记录* @param session* @param userId*/
private void cleanFailNum(HttpSession session, String userId) {session.getServletContext().removeAttribute(userId);
}
参考:JAVA密码输入错误3次,锁定账号30分钟简单实现(不操作数据库)_eclipse用户登录三次失败锁死_Man20161217的博客-CSDN博客
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
