Spring security_Password 加密

Spring security_Password Encryption

使用 spring 安全登录对多个用户工作正常。 现在我必须使用密码登录应用程序,密码应该在数据库中加密。

HomeController : Here I'm retrieving username, password from FORM.

spring-security.xml : Here I'm retrieving username, password from DB.

现在我必须在某个地方比较这些密码以进行匹配,然后我必须让对方登录。

请给我一个想法,我们如何使用 spring 安全性来做到这一点。 ??

我相信您在使用 Spring 安全性时不会自己进行凭据匹配。这是您配置的 AuthenticationManager 的职责。

您可以指定在匹配凭据时使用的编码器,例如:-

<!-- This is the authentication manager -->
<authentication-manager>
   <authentication-provider user-service-ref="yourUserService">
    <password-encoder hash="sha"/>
   </authentication-provider>
</authentication-manager>

您需要注意的是在您的用户详细信息中存储编码密码 table。

看看docs

剧透

如果您正在使用 Spring 安全性,则不需要控制器来收集用户凭据。 Spring 安全过滤器会处理这个问题。

例如:-

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:security="http://www.springframework.org/schema/security"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans.xsd
                           http://www.springframework.org/schema/security
                           http://www.springframework.org/schema/security/spring-security-3.2.xsd">

    <security:global-method-security secured-annotations="enabled" />

    <security:http auto-config="true">
        <!-- Restrict URLs based on role -->
        <security:intercept-url pattern="/login*" access="IS_AUTHENTICATED_ANONYMOUSLY" />
        <security:intercept-url pattern="/logoutSuccess*" access="IS_AUTHENTICATED_ANONYMOUSLY" />

        <security:intercept-url pattern="/css/main.css" access="IS_AUTHENTICATED_ANONYMOUSLY" />
        <security:intercept-url pattern="/resources/**" access="IS_AUTHENTICATED_ANONYMOUSLY" />

        <security:intercept-url pattern="/**" access="ROLE_USER" />

        <!-- Override default login and logout pages -->
        <security:form-login login-page="/login.html" // this is where your custome login page lives.
                             login-processing-url="/loginProcess"  //this is where you POST your login form
                             default-target-url="/index.jsp" 
                             authentication-failure-url="/login.html?login_error=1" />
        <security:logout logout-url="/logout" logout-success-url="/logoutSuccess.html" />
    </security:http>

    <security:authentication-manager>
        <security:authentication-provider >
            <security:jdbc-user-service data-source-ref="dataSource" />
        </security:authentication-provider>
    </security:authentication-manager>

</beans>

我建议你阅读参考文档和简单的 blog/tutorial(有很多)。

更进一步,给Spring Boot Security一个机会。