欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

记录一次springsecurity5.0.6做权限登录异常缓慢的问题解决记录

程序员文章站 2022-12-28 20:49:29
添加pom依赖 然后发现是标红处的执行时间特别长,然后断点一步步走下去 在 ......

添加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中)

记录一次springsecurity5.0.6做权限登录异常缓慢的问题解决记录

 

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

 

记录一次springsecurity5.0.6做权限登录异常缓慢的问题解决记录

 

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


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

记录一次springsecurity5.0.6做权限登录异常缓慢的问题解决记录

 

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


记录一次springsecurity5.0.6做权限登录异常缓慢的问题解决记录

 

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


记录一次springsecurity5.0.6做权限登录异常缓慢的问题解决记录

 


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

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

记录一次springsecurity5.0.6做权限登录异常缓慢的问题解决记录