您的位置:首页 > 数据库 > Redis

Redis实现密码错误次数过多限制登录

L_taotao666 2019-06-11 14:34 288 查看

Redis与Spring

实现登录时密码错误次数过多限制登录,主要防止暴力破解登陆的问题。
首先新建enum枚举

public enum RedisKeyEnum {
LOGIN_COUNT("LoginCount","访问home次数统计",null);
private String key;
private String desc;
//过期时间,秒
private Integer expire;

RedisKeyEnum(String key, String desc, Integer expire) {
this.key = key;
this.desc = desc;
this.expire = expire;
}

public String getKey() {
return key;
}

public void setKey(String key) {
this.key = key;
}

public String getDesc() {
return desc;
}

public void setDesc(String desc) {
this.desc = desc;
}

public Integer getExpire() {
return expire;
}

}

登录时使用redis

public String login(String realName, String password,){
//根据用户名设置key
String keys = RedisKeyEnum.SIGN_UP_LOGIN_COUNT + "_" + realName;
Integer a = (Integer) redisTemplate.opsForValue().get(keys);
if (a==null){
a=0;
redisTemplate.opsForValue().set(keys,a);
}
//登录错误次数超限
if (a<5){
if (!user.getPassword().equals(MyPasswordEncrypt.encryptPassword(password))) {
a++;
redisTemplate.opsForValue().set(keys,a);
return "/home";
}
//设置keys值的过期时间
redisTemplate.opsForValue().set(keys,a,3600, TimeUnit.SECONDS);
return "/login";
}
}

主要代码如上所示,有不足的地方望指出。

标签: