【问题标题】:Spring remember-me doesn't redirect to homepage春天记住我不重定向到主页
【发布时间】:2013-03-04 14:36:56
【问题描述】:

这是我配置 Spring-security 的方式:

   <security:http auto-config="true">
        <security:remember-me key="123456" />   <!--  Be Aware -->
        <!-- Restrict URLs based on role -->
        <security:intercept-url pattern="/index*" access="IS_AUTHENTICATED_ANONYMOUSLY" />
        <security:intercept-url pattern="/account/*" access="IS_AUTHENTICATED_ANONYMOUSLY" />        
        <security:intercept-url pattern="/assets/**" access="IS_AUTHENTICATED_ANONYMOUSLY" />

        <security:intercept-url pattern="/**" access="ROLE_USER" />
        <!-- Override default login and logout pages -->
        <security:form-login login-page="/account/login.html" 
                             login-processing-url="/account/loginProcess" 
                             default-target-url="/home.html" 
                             authentication-failure-url="/account/login.html?login_error=1" />
        <security:logout logout-url="/account/logout" logout-success-url="/account/login.html" />
    </security:http>

我的登录页面还包括 Spring 安全性的所有必要项目(记住我的复选框j_usernamej_password)。要指出的另一件事是我登录后创建的 Spring-security cookie。但是,下次我启动浏览器时,我不会自动重定向到主页。 (虽然会话存在,如果我尝试输入 home.html 我可以)。 我想知道也许这是我应该在我的配置中暗示重定向到 home.html 的东西。但是我在互联网上找到的任何例子都提到了它。你能帮忙吗?

【问题讨论】:

    标签: spring-security remember-me


    【解决方案1】:

    我不确定您到底期望什么,但记住我过滤器不应该在成功的自动登录时执行任何重定向(基于记住我 cookie 的身份验证)。记住我功能的全部意义在于让请求通过身份验证检查并在不中断其流程的情况下进行处理,以防记住我的 cookie 有效。

    编辑: 目前尚不清楚您希望重定向发生的时间和原因。在用户以交互方式验证自己(通过填写并提交登录表单)后,他会收到一个由浏览器保存的记住我的 cookie。然后稍后(可能几天后)在随后的会话中,他浏览到您的应用程序的某个随机 URL(例如通过书签)。浏览器仍然有记住我的 cookie,所以它与请求一起发送。然后服务器端的 remember-me 过滤器处理 cookie,并在没有任何进一步交互的情况下验证用户。现在为什么要将该请求重定向到 home.html 而不是提供用户请求的内容?

    【讨论】:

    • 我明白了,那么,我的任务是手动进行重定向吗?也许在一些js的帮助下检索cookie?
    • 我的回复会太长,请参阅上面我编辑的答案。
    • 以 Facebook 为例,当你已经登录时,即使你输入 facebook.com 作为 URL,你也会自动转到 home.php。所以你看不到任何登录页面。我希望我的应用程序是这样的。
    • remember-me 过滤器涵盖了您的一半要求:它在没有交互式表单登录的情况下对用户进行身份验证(如果请求包含有效的 remember-me cookie),但这就是它必须并且将会为你做。如果您想从 webapp 的根 URL 自动重定向,这是一个不同的要求,不需要对记住我功能做任何事情。编写一个响应重定向的控制器,或者创建一个自定义的网络过滤器来实现这种行为。
    【解决方案2】:

    尝试在表单登录标签下设置default-target-url=/path/to/your/homepage

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-19
      • 2018-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-08
      • 1970-01-01
      • 2013-12-05
      相关资源
      最近更新 更多