记录一次springsecurity5.0.6做权限登录异常缓慢…

2018-07-27 06:23:41来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

添加pom依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
<version>2.0.3.RELEASE</version>
</dependency>

此依赖会加载 springsecurity5.0.6版本

做完权限功能后,发现登录异常缓慢,启动后的第一次登录需要14s,退出后登录需要7s。
把日志打印设置到debug级别,发现日志打印的时间有两个差距巨大的断层,没个断层有7秒,而且都是在 继承 UserDetailsService 这个类之前或者之后

进入自定义用户类之前一次打印为 o.s.s.authentication.ProviderManager - Authentication attempt using org.springframework.security.authentication.dao.DaoAuthenticationProvider

然后根据日志找到 ProviderManager.java 和 DaoAuthenticationProvider.java(在security的核心包core中)

 

然后发现是标红处的执行时间特别长,然后断点一步步走下去

 

 

BCrypt.checkpw(rawPassword.toString(), encodedPassword);卡死


原来是自己选用的密码加密器一直有问题

 

然后果断修改一个, 这么多可以用的 最后选择用了 Md4PasswordEncoder 虽然已经过时了 但是为了验证是否是加密器的问题 还是修改了,改完之后,登录果然秒入了(修改了加密器 还需要修改密码 不然匹配方式不一样是不能登录的)


 

当然 看着过时类的横线不爽,自己还可以写一个 MD5的或者AES的 只要实现 org.springframework.security.crypto.password.PasswordEncoder 这个类的两个方法就行


 


我自己用MD5实现一个密码加密类。

添加完自定义类之后 还需要在配置文件中添加配置,修改密码后登录也是秒速

 










			   
			   

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:【原】无脑操作:EasyUI Tree实现左键只选择叶子节点、右键浮动

下一篇:Struts2后期(这框架目前正处于淘汰状态)