如何使用密码加密对spring security中的用户进行身份验证

时间:2014-09-15 18:13:11

标签: spring-mvc encryption spring-security

我在我的应用程序中使用spring security。在我的数据库中。密码是加密形式的。所以在登录时我发送密码,该密码应该转换为加密形式然后我应该能够比较密码即时发送和数据库中存在的密码。如果匹配,则应成功登录。 这是我的spring-security.xml

 <authentication-manager">
        <authentication-provider >
            <password-encoder ref="encoder"/>
                <jdbc-user-service data-source-ref="dataSource"
                    users-by-username-query="select email,password from user where email=?"
                     /> 
            </authentication-provider>
</authentication-manager>
<beans:bean id="encoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"/>

这是我的用户表,其中包含电子邮件,密码,联系人,地址。 任何帮助我如何检查用户输入的密码的加密密码值以及如何检查是否为matechs?

1 个答案:

答案 0 :(得分:0)

您可以编写自己的PasswordEncoder,将用户转移到弹簧安全。

@Component("PasswordEncoder")
public class PasswordEncoderimpl implements PasswordEncoder{
    @Override
    public String encodePassword(String rawPass, Object salt) {
        //it is the algorithm the transfer password to encrypted password
    }
    @Override
    public boolean isPasswordValid(String encPass, String rawPass, Object salt) {
        //encPass is the password in your database
        //rawPass is the password user entering 
        //then you can write it like
        return encPass.euqals(encodePassword(rawPass));
    }
}

然后你的spring-security.xml将是:

<authentication-manager>
    <authentication-provider>   
      <password-encoder ref="PasswordEncoder">
      </password-encoder>
     </authentication-provider>
</authentication-manager>