2014-09-20 70 views
0

Spring Security給了我適合,我無法避開身份驗證錯誤。下面是我的配置:Spring Securitiy jdbc-user-service沒有進行身份驗證 - 憑據錯誤

<beans:bean id='bCryptPasswordEncoder' class='org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder'/> 
    <authentication-manager> 
    <authentication-provider> 
     <password-encoder ref="bCryptPasswordEncoder" /> 
     <jdbc-user-service 
      data-source-ref="dataSource" 
      users-by-username-query="select emplid as USERNAME ,password as PASSWORD,'true' AS ENABLED from app_user where emplid=?" 
      authorities-by-username-query="select u.emplid, p.name from app_user u inner join app_user_app_permissions auap ON auap.app_users = u.id inner join app_permission p on p.id = auap.app_permissions where u.emplid =?" /> 
    </authentication-provider> 
    </authentication-manager> 

我和我的創造編碼的密碼:

String password = "p4ssword"; 
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); 
String encodedPassword = passwordEncoder.encode(password); 

我已經驗證了正確的用戶名/密碼是在數據庫中,並且查詢獲取它們運行。

知道爲什麼這是不行的,它的駕駛我堅果

回答

0

如果用戶按用戶名查詢工作正常,然後檢查的第一件事就是第二個查詢。分配給用戶的角色/權限。要使登錄嘗試成功,用戶必須至少有一個由用戶名查詢返回的角色。

要測試它,您可以使用如下查詢:「select app_user u'where u.emplid =?」中的u.emplid,'USER'。

如果它仍然不起作用,那麼你最好的選擇是將日誌記錄級別設置爲DEBUG並查看Spring正在逐步完成的工作。

相關問題