簡體   English   中英

了解Spring Security中permitAll()和anonymous()的區別

[英]Understanding the difference of permitAll() and anonymous() in Spring Security

我只是想確定我是否正確,所以我會感謝任何回應; 在我的configure-override中:

@Override
protected void configure(HttpSecurity http) throws Exception
{
    http.
        [...]
        permitAll()
        [...]
}

permitAll()允許任何請求,同時:

anonymous()

僅授予在這兩種情況下,一個HttpSession -object默認創建登錄用戶的訪問。

是對的嗎?

從Spring 文檔

通常認為采用“默認拒絕”是一種良好的安全措施,您可以明確指定允許的內容並禁止其他所有內容。 定義未經身份驗證的用戶可訪問的內容的情況類似,尤其是對於Web應用程序。 許多站點要求必須對用戶進行身份驗證,除了幾個URL(例如主頁和登錄頁面)。 在這種情況下,最簡單的方法是為這些特定的URL定義訪問配置屬性,而不是為每個安全資源定義。 換句話說,有時可以說默認情況下需要ROLE_SOMETHING,並且只允許此規則的某些例外,例如應用程序的登錄,注銷和主頁。 您也可以完全忽略過濾器鏈中的這些頁面,從而繞過訪問控制檢查,但由於其他原因,這可能是不合需要的,特別是如果頁面對經過身份驗證的用戶的行為不同。

這就是匿名身份驗證的含義。

請注意,“匿名身份驗證”的用戶與未經身份驗證的用戶之間沒有真正的概念差異。 Spring Security的匿名身份驗證只是為您提供了一種更方便的方法來配置訪問控制屬性。

使用.permitAll()將配置授權,以便在該特定路徑上允許所有請求(來自匿名用戶和登錄用戶)。

.anonymous()表達式主要是指用戶的狀態(登錄與否)。 基本上直到用戶“經過身份驗證”,它才是“匿名用戶”。 這就像每個人都有“默認角色”。

暫無
暫無

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

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