2016-12-03 207 views
-1

我工作的身份验证模块在春季和成功通过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> 
+1

什么是异常,你失败的尝试获得状态代码? – shazin

回答

0

这是缺乏在你的问题中提供的信息,但你可以尝试以下操作:

  1. 检查存储在加密的方式在你的DB用户密码;

  2. 将断点放在UsernamePasswordAuthenticationFilter.attemptAuthentication()方法中,并进行少量调试步骤。在这里,您可以了解您的工作流程中最新的错误。

请提供附加信息(状态码,错误信息等)以获得更准确的帮助。谢谢

+0

我没有收到任何异常,只是得到自定义错误消息作为无效的用户名和密码。我按照给定的链接进行身份验证 https://github.com/jirkapinkas/java-blog-aggregator – Abbas

+0

当您发送身份验证请求时,您收到了什么状态码? – Sobik

+0

200请仔细阅读我的问题和最后的评论 – Abbas