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一个机会。
使用 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一个机会。