2015-10-19 100 views
1

在插入数据库之前,我使用Spring StandardPasswordEncoder对密码进行编码。但是当试图用相同的密码登录时,我得到一个无效的密码错误。不知道什么是错的。以下是代码。在春季使用密码编码时用户登录失败

安全配置:

<security:authentication-manager id="authMgr"> 
    <security:authentication-provider> 
     <security:jdbc-user-service 
      data-source-ref="dataSource" /> 
     <security:password-encoder ref="passwordEncoder"></security:password-encoder> 
    </security:authentication-provider> 
</security:authentication-manager> 
<bean id="passwordEncoder class="org.springframework.security.crypto.password.StandardPasswordEncoder"> 
</bean> 

服务层(将数据传递到数据访问层之前密码编码)

import org.springframework.security.crypto.password.PasswordEncoder; 

@Autowired 
private PasswordEncoder passwordEncoder; 

user.setPassword(passwordEncoder.encode(newAccountDetails.getPassword())); 
userDataAccess.createUser(user); 

回答

1

相信建议How to use new PasswordEncoder from Spring Security适用。看到接受的答案有一个很好的解释。

我修改建议的代码的答案之一以下,以更好地适应当前设置:

<security:authentication-manager id="authMgr"> 
    <security:authentication-provider> 
     <security:jdbc-user-service data-source-ref="dataSource" /> 
     <security:password-encoder ref="passwordEncoder"></security:password-encoder> 
    </security:authentication-provider> 
</security:authentication-manager> 

<bean id="passwordEncoder class="org.springframework.security.crypto.password.org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"> 
</bean>