从 Spring Security 3.1.4.RELEASE 开始,旧的org.springframework.security.authentication.encoding.PasswordEncoder
已被弃用 https://jira.springsource.org/browse/SEC-2147?page=com.atlassian.jira.plugin.system.issuetabpanels%3aall-tabpanel赞成org.springframework.security.crypto.password.PasswordEncoder
。由于我的应用程序尚未向公众发布,因此我决定转向新的、未弃用的 API。
到目前为止,我有一个ReflectionSaltSource
自动使用用户的注册日期作为每个用户的密码盐。
String encodedPassword = passwordEncoder.encodePassword(rawPassword, saltSource.getSalt(user));
在登录过程中,Spring还使用我的bean来适当验证用户是否可以登录。我无法在新的密码编码器中实现这一点,因为SHA-1的默认实现 -StandardPasswordEncoder
只能在编码器创建期间添加全局秘密盐。
是否有任何合理的方法可以使用未弃用的 API 进行设置?
如果您实际上尚未使用现有格式注册任何用户,那么您最好切换到使用BCrypt 密码编码器 https://stackoverflow.com/a/8528804/241990反而。
麻烦少了很多,因为您根本不必担心盐 - 细节完全封装在编码器内。使用 BCrypt 比使用普通哈希算法更强大,并且它也是与使用其他语言的应用程序兼容的标准。
确实没有理由为新应用程序选择任何其他选项。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)