2013-07-09 111 views
5

我想通過以下的文件,實現與Spring無國籍身份驗證,http://static.springsource.org/spring-security/site/docs/3.1.x/reference/security-filter-chain.html#filter-chains-with-ns春季安全無狀態配置

所以在我的彈簧security.xml文件,我有

<!-- Stateless RESTful service using Basic authentication --> 
<http pattern="/restful/**" create-session="stateless"> 
    <intercept-url pattern='/**' access='ROLE_REMOTE' /> 
    <http-basic /> 
</http> 

當我使用的瀏覽器測試它,第一個請求需要被認證。但後來不是。從我的理解,我應該看到用戶登錄提示。有什麼我失蹤?

回答

3

否。在基本認證的情況下,瀏覽器會記住您輸入的憑證並自動將其隨後的請求發送給他們。

爲了確保您的配置是無狀態的,您可以嘗試使用命令行工具(wgetcurl)發出一些請求(使用和不使用身份驗證)。

+0

我試圖用捲曲測試認證功能, '捲曲--user MYNAME:mypswd的http://本地主機:8080 /春-HTTP-Basic的認證/寧靜/ welcome' 我不得不提供即使我沒有創建create-session =「stateless」,每個請求的用戶名和密碼也是如此。 –

+3

我想我現在發現它是如何工作的。當不使用create-session =「stateless」時,我將能夠使用curl選項--cookie-jar cookie.txt將會話保存在cookie中,然後使用保存在cookie中的會話與curl選項--cookie cookies.txt通過認證。但是,當使用create-session =「無狀態」時,會話將不起作用,我將不得不爲每個請求提供用戶名和密碼。 –

+0

@DinoTw,不使用create-session =「無狀態」是創建無狀態配置的方式,它實際上將驗證「會話」信息存儲在瀏覽器cookie中,但在服務器端無狀態,是正確的嗎? – curious1