我的问题类似于this one,但我可以简化一些。基本上我想通过记住我的cookie验证用户,但我希望服务器端的所有内容都是完全无状态的,即永远不会创建HttpSession
。我有以下设置:
<security:http use-expressions="true" create-session="stateless" >
<security:intercept-url pattern="/index.jsp" access="hasRole('ROLE_ANONYMOUS')" />
<security:intercept-url pattern="/**" access="hasRole('ROLE_TEST')" />
<security:form-login login-page="/index.jsp" default-target-url="/home" always-use-default-target="true" authentication-failure-url="/index.jsp?login_error=1" />
<security:logout logout-success-url="/index.jsp"/>
<security:remember-me key="MY_KEY" />
</security:http>
<security:authentication-manager>
<security:authentication-provider>
<security:user-service>
<security:user name="testUser" password="testPassword" authorities="ROLE_TEST" />
</security:user-service>
</security:authentication-provider>
</security:authentication-manager>
我使用上面的用户名和密码进行身份验证,并在浏览器中查看记住我的cookie。它的一部分工作得很好。但是,我发现它正在这个过程中创建一个会话。我认为create-session="stateless"
应该阻止这一点。我在这里错过了什么吗?
答案 0 :(得分:3)
在使用了更多内容后,我发现创建会话的不是Spring Security。每当我点击它时,index.jsp就会创建一个新会话。我只是将<%@ page session="false">
添加到index.jsp的顶部,现在没有创建会话。