2013-07-09 91 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