正常的用户每天的登录退出不会太频繁,遇到频繁的登录则很可能是黑客行为。对于黑客行为,我们可以使用登录次数限制来应对。本文将介绍如何限制用户每天的登录次数,包括:“记录当天用户账号的登录次数”、“用户进行登录请求时,检查当天账号的登录次数”、“用户正常退出登录,更新登录次数”。
1、记录当天用户账号的登录次数。
定义hashmap类型的属性mapLoginCountIn1Day,用来存储当前用户账号(key)和登录账号的次数(value):
protected static Map<String, Object> mapLoginCountIn1Day = new HashMap<String, Object>();
定义另一个hashmap类型的属性mapLoginDay,用户存储当前日期(key)和mapLoginCountIn1Day(value):
protected static Map<String, Object> mapLoginDay = new HashMap<String, Object>();
2、用户进行登录请求时,检查当天账号的登录次数。
在checkLoginCount方法检查登录次数:
@SuppressWarnings("unchecked")
protected boolean checkLoginCount(Object phone, ErrorInfo ecOut) {
boolean bLoginToManyTimes = false; // 检查Staff是否登录次数过多
lock.writeL