BCryptPasswordEncoder春季安全
问题描述:
我工作的身份验证模块在春季和成功通过admin账号使用BCryptPasswordEncoder如下的 我登录面临认证失败并创建一个虚拟用户。然后我成功登录通过虚拟用户和注销以及。 用户(管理员,用户)检查两个帐户后,当我尝试通过任何用户登录我得到登录失败错误。BCryptPasswordEncoder春季安全
注意:如果我不使用任何密码加密方案,那么我的模块工作正常。
<security:http auto-config="true" use-expressions="false">
<security:form-login login-page="/login" login-processing-url="/login" username-parameter="custom_username"
password-parameter="custom_password"
default-target-url="/index"
always-use-default-target="true"
authentication-failure-url="/login?error=true" />
<security:logout logout-url="/logout" logout-success-url="/login?logout=true"/>
<security:intercept-url pattern="/admin/*" access="ROLE_ADMIN"/>
<security:intercept-url pattern="/hrm/*" access="ROLE_HRM, ROLE_ADMIN"/>
<security:intercept-url pattern="/leave/*" access="ROLE_HRM, ROLE_USER, ROLE_ADMIN"/>
<security:intercept-url pattern="/index**" access="ROLE_HRM, ROLE_USER, ROLE_ADMIN"/>
<security:intercept-url pattern="/**" access="ROLE_ANONYMOUS, ROLE_HRM, ROLE_USER, ROLE_ADMIN"/>
</security:http>
<bean id="encoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder">
<constructor-arg name="strength" value="12" />
</bean>
<security:authentication-manager>
<security:authentication-provider>
<security:password-encoder ref="encoder"/>
<security:jdbc-user-service data-source-ref="dataSource"
authorities-by-username-query="select app_user.username, role.name from app_user
join app_user_role on app_user.id = app_user_role.users_id
join role on app_user_role.roles_id = role.id
where app_user.username = ?"
users-by-username-query="select username,password,enabled from app_user where username = ?" />
</security:authentication-provider>
</security:authentication-manager>
答
这是缺乏在你的问题中提供的信息,但你可以尝试以下操作:
检查存储在加密的方式在你的DB用户密码;
将断点放在UsernamePasswordAuthenticationFilter.attemptAuthentication()方法中,并进行少量调试步骤。在这里,您可以了解您的工作流程中最新的错误。
请提供附加信息(状态码,错误信息等)以获得更准确的帮助。谢谢
什么是异常,你失败的尝试获得状态代码? – shazin