我有一个使用 spring 框架和 spring security 进行登录的 java web 应用程序。在我的数据库中,我的密码在保存之前已加密为 MD5。我在 application-config.xml 中添加了这段代码
<security:authentication-provider>
<security:password-encoder hash="md5"/>
<security:jdbc-user-service
data-source-ref="dataSource"
users-by-username-query="select user_name username, user_password password, 1 enabled from users where user_name=?"
authorities-by-username-query="select username, authority from authorities where username=?" />
</security:authentication-provider>
起初,当数据库中的密码未加密时,它起作用。但是当我对其进行加密并将此片段添加到我的应用程序配置中时
<security:password-encoder hash="md5"/>
我无法登录。
我意识到这有点晚了,但是 Spring 具有内置的类,使这变得容易得多。
@Test
public void testSpringEncoder() {
PasswordEncoder encoder = new Md5PasswordEncoder();
String hashedPass = encoder.encodePassword("koala", null);
assertEquals("a564de63c2d0da68cf47586ee05984d7", hashedPass);
}
这是我使用内置 Spring Security 代码编写的单元测试,它比 MessageDigest 代码小很多,并且由于您已经在使用 Spring Security,因此您的类路径中应该已经包含了这些类。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)