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";
}
}
主要代码如上所示,有不足的地方望指出。