【问题标题】:Spring Security in a Stateless webapp? [duplicate]无状态 web 应用程序中的 Spring Security? [复制]
【发布时间】:2012-01-02 12:15:19
【问题描述】:

可能重复:
create-session stateless usage

我刚刚开始在 Spring Security 3.1 版上进行试验,我想知道如何使用无状态 webapp 实现身份验证。

想到了http-basic和digest,我试过了,但我不喜欢在不关闭浏览器的情况下无法像表单身份验证那样注销。

我目前有一个使用 Spring Security 的基于表单的身份验证的工作无状态 Web 应用程序(这可能通过在会话中存储身份验证内容使其成为有状态的?),我想知道我可以研究哪些策略来使 Spring Security 工作不使用 http 会话?

我意识到有一个<http create-session="stateless" ..>,但肯定有一些事情需要做更多的事情,因为在我尝试之后应用程序停止正常工作,通过在访问受保护资源时继续对我进行身份验证。

这是我的配置:

<http use-expressions="true" create-session="stateless">
    <form-login login-page="/login" 
        login-processing-url="/static/j_spring_security_check"
        authentication-failure-url="/login?login_error=t" />
    <logout logout-url="/static/j_spring_security_logout"/>

    <intercept-url pattern="/person/test/**" 
        access="isAuthenticated() and principal.username=='albertkam'"
    />
    <intercept-url pattern="/person/**" access="hasRole('ROLE_NORMAL')"/>

    <remember-me
        key="spitterKey"
        token-validity-seconds="2419200"/>
</http>

create-session="stateless"

  1. 访问http://myhost:8080/mycontext/person/blah
  2. 进入登录页面
  3. 登录后返回首页urlhttp://myhost:8080/mycontext(我希望它返回到受保护的资源)

没有create-session="stateless",默认为ifRequired(有状态):

  1. 访问http://myhost:8080/mycontext/person/blah
  2. 进入登录页面
  3. 登录后返回受保护的urlhttp://myhost:8080/mycontext/person/blah(这是正确的行为,但有状态)

【问题讨论】:

标签: spring spring-security


【解决方案1】:

您可以在&lt;form-login&gt;上使用always-use-default-target="false",以防止登录成功后进入默认页面。

【讨论】:

  • 您好,我尝试了您的建议,但它仍然以无国籍状态进入主页。我认为这不是问题,因为没有无状态属性值,流程可以正常工作。
  • 哦,很抱歉知道这一点,我认为 always-use-default-target="false" 也应该在无状态的情况下工作。
猜你喜欢
  • 2015-10-26
  • 2016-10-30
  • 2016-03-28
  • 1970-01-01
  • 2013-03-21
  • 1970-01-01
  • 2016-04-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多