![](/img/trans.png)
[英]Custom Authentication Provider on Spring Security 2 userDetailsService issue
[英]Spring Security 3.x: Creating a custom authentication provider without a UserDetailsService
我通過擴展AbstractUserDetailsAuthenticationProvider
創建了一個自定義身份驗證提供程序,該提供程序根據數據庫對用戶進行身份驗證並執行其他授權檢查。
我面臨的煩惱是身份驗證提供程序要求我連接UserDetailsService
。 至少對於這個項目,我不需要UserDetailsService
因為如果我有身份驗證提供程序來提取用戶信息以執行身份驗證/授權,我認為不需要讓UserDetailsService
提取相同的用戶信息來構建UserDetails
對象。
所以,現在,我必須將一個虛擬的UserDetailsService
到我的身份驗證提供程序中,它絕對沒有做任何事情。
是否可以在沒有UserDetailsService
情況下創建身份驗證提供程序?
查看AbstractUserDetailsAuthenticationProvider的代碼(至少對於版本3.0.5),它不需要連接UserDetailsService。 仔細檢查XML配置以確保未使用DAOAuthenticationProvider。
你應該有一個像這樣的塊
<authentication-manager>
<authentication-provider ref="yourAuthenticationProvider" />
</authentication-manager>
此外,記錄您正在查看的異常,以確切了解它從哪里被拋出。
Spring使用的默認身份驗證提供程序將是DaoAuthenticationProvider
(它擴展了AbstractUserDetailsAuthenticationProvider
,並在doAfterPropertiesSet()
中添加了對它自己的一些檢查)。
因此,實現確實需要UserDetailsService
但您可以通過擴展AbstractUserDetailsAuthenticationProvider
提供您自己的提供程序實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.