簡體   English   中英

Spring Security 3.x:在沒有UserDetailsS​​ervice的情況下創建自定義身份驗證提供程序

[英]Spring Security 3.x: Creating a custom authentication provider without a UserDetailsService

我通過擴展AbstractUserDetailsAuthenticationProvider創建了一個自定義身份驗證提供程序,該提供程序根據數據庫對用戶進行身份驗證並執行其他授權檢查。

我面臨的煩惱是身份驗證提供程序要求我連接UserDetailsService 至少對於這個項目,我不需要UserDetailsService因為如果我有身份驗證提供程序來提取用戶信息以執行身份驗證/授權,我認為不需要讓UserDetailsService提取相同的用戶信息來構建UserDetails對象。

所以,現在,我必須將一個虛擬的UserDetailsService到我的身份驗證提供程序中,它絕對沒有做任何事情。

是否可以在沒有UserDetailsService情況下創建身份驗證提供程序?

查看AbstractUserDetailsAuthenticationProvider的代碼(至少對於版本3.0.5),它不需要連接UserDetailsS​​ervice。 仔細檢查XML配置以確保未使用DAOAuthenticationProvider。

你應該有一個像這樣的塊

<authentication-manager>
    <authentication-provider ref="yourAuthenticationProvider" />
</authentication-manager>

此外,記錄您正在查看的異常,以確切了解它從哪里被拋出。

Spring使用的默認身份驗證提供程序將是DaoAuthenticationProvider (它擴展了AbstractUserDetailsAuthenticationProvider ,並在doAfterPropertiesSet()中添加了對它自己的一些檢查)。

因此,實現確實需要UserDetailsService但您可以通過擴展AbstractUserDetailsAuthenticationProvider提供您自己的提供程序實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM