2013-05-01 209 views
4

我在學習Spring Security,並且我完全不明白如果我應該使用JdbcUserDetailsManager還是UserDetailsService的自定義實現。我正在使用數據庫來存儲用戶。使用JdbcUserDetailsManager vs自己的UserDetailsS​​ervice

我沒有得到什麼JdbcUserDetailsManager讓你從很多方法,我不知道我想用嗎?如果你有驗證等?你把它包裝在自己的UserDetailsService執行?

我的意思是,你會泄漏這個經理類通過你的應用程序。創建自己的更好嗎?

回答

3

有一些差異:

  1. UserDetailsService是核心接口加載用戶的細節和所使用的DaoAuthenticationProvider
  2. UserDetailsService具有子接口的定義CRUD上的用戶的抽象操作:UserDetailsManager
  3. JdbcDaoImpl是JDBC實施UserDetailsService
  4. JdbcUserDetailsManager是一個JDBC實現UserDetailsManagerJdbcDaoImpl的擴展。它還提供了界面GroupManager

根據差異,它可能會影響您決定使用,公開,包裝或甚至實施的方式。

+0

Okey,所以我猜JdbcUserDetailsManager有檢查密碼等的邏輯嗎?哪一個UserDetailsS​​ervice的普通實現沒有? – LuckyLuke 2013-05-01 14:16:06

+0

我相信很高興看到[AbstractUserDetailsAuthenticationProvider](https://github.com/SpringSource/spring-security/blob/master/core/src/main/java/org/springframework/security/authentication/dao/AbstractUserDetailsAuthenticationProvider。 java)和[DaoAuthenticationProvider](https://github.com/SpringSource/spring-security/blob/master/core/src/main/java/org/springframework/security/authentication/dao/DaoAuthenticationProvider.java)。這些憑證的實際檢查發生在這兩個類中。 – nobeh 2013-05-01 14:24:47

+0

但是,如何將JdbcDaoImpl用作身份驗證提供程序?我看不到它在哪裏實現接口? – LuckyLuke 2013-05-01 16:27:11

相關問題