没有合适的资源?快使用搜索试试~ 我知道了~
首页springboot整合shiro登录失败次数限制功能的实现代码
springboot整合shiro登录失败次数限制功能的实现代码
796 浏览量
更新于2023-05-30
评论
收藏 337KB PDF 举报
主要介绍了springboot整合shiro-登录失败次数限制功能,实现此功能如果是防止坏人多次尝试,破解密码的情况,所以要限制用户登录尝试次数,需要的朋友可以参考下
资源详情
资源评论
资源推荐

springboot整合整合shiro登录失败次数限制功能的实现代码登录失败次数限制功能的实现代码
主要介绍了springboot整合shiro-登录失败次数限制功能,实现此功能如果是防止坏人多次尝试,破解密码的情况,所以要限制用户登录尝试次数,需要
的朋友可以参考下
这次讲讲如何限制用户登录尝试次数,防止坏人多次尝试,恶意暴力破解密码的情况出现,要限制用户登录尝试次数,必然要对用户名密码验证失败做记录,Shiro中用户
名密码的验证交给了CredentialsMatcher 所以在CredentialsMatcher里面检查,记录登录次数是最简单的做法。当登录失败次数达到限制,修改数据库中的状态字段,并返
回前台错误信息。
因为之前的博客都是用的明文,这里就不对密码进行加密了,如果有需要加密,将自定义密码比较器从SimpleCredentialsMatcher改为HashedCredentialsMatcher 然后将对应
的配置项打开就可以。
说在前面说在前面
非常抱歉,因为我之前整合的时候,只是注意功能,而没有注意细节,导致在登录失败之后,再次转发到 post方法/login 也就是真正的登录方法,导致 再次登录,然后导致下面密
码错误3次之后 就 锁定 我设置的是5次.
所以将shiroConfig中的值改为shiroFilterFactoryBean.setLoginUrl("/");具体参考源代码。
另外 还需要将 自定义ShiroRealm 中 密码对比注销掉, 将密码对比 交给 底层的 密码比较器才可以 锁定用户,否则将 永远报密码错误。,具体代码 如下:
修改登录方法改为登录之后,重定向到/index
限制登录次数限制登录次数
自定义RetryLimitHashedCredentialsMatcher继承SimpleCredentialsMatcher
package com.springboot.test.shiro.config.shiro;
import java.util.concurrent.atomic.AtomicInteger;
import com.springboot.test.shiro.modules.user.dao.UserMapper;
import com.springboot.test.shiro.modules.user.dao.entity.User;
import org.apache.log4j.Logger;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;


















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0