2

使用 Stormpath 和 Spring Boot(基于本教程),在我启动服务器并使用我的凭据成功登录后,一切正常。但是,当我退出浏览器并尝试打开我的应用程序时,我得到一个重定向循环。

此处提供了一个最小的示例作为存档。这是一个 Gradle 项目。cd进入存档内的目录并使用./gradlew bootRun. 该应用程序可通过http://localhost:8080访问。为此需要 Stormpath API 密钥。注册,获取 API 密钥并将 apiKey-XXX.properties 文件复制到~/.stormpath/apiKey.properties. 这样,Spring Boot 将默认获取该文件并使用它(仅当您在 Stormpath 中定义了一个应用程序时)。

登录,然后退出浏览器(在 Mac 上不要只用红色按钮关闭它,使用 command-q 或右键单击浏览器图标并退出)。重新启动它并再次尝试访问http://localhost:8080。那是我得到重定向循环的时候。在 Mac 和 Windows、Firefox 和 Chrome 上尝试过,同样的情况。

如果我打开开发者控制台,我可以看到首先我被重定向到登录页面(很公平),然后我被重定向到/(奇怪)等等......

当我第一次登录时,我可以看到一个名为 localhost 的 cookieaccount也是为 localhost 创建的JSESSIONID。当我重新启动浏览器时,accountcookie 完好无损JSESSIONID并由服务器重新生成。所以我猜这种行为与JSESSIONID绑定到登录会话或其他东西的事实有关。

有没有办法配置这种行为?重新启动浏览器后,用户应该 a) 仍然登录或 b) 能够再次登录。任何的想法?

另外,附带说明一下,我使用 AngularJS 应用程序作为我的前端。我不认为这应该有任何区别,但我认为它可能很重要(示例应用程序为此包含一些 AngularJS hello world 代码)。

更新

该问题已被 Stormpath 标记为错误,并且在发布后com.stormpath.spring:stormpath-default-spring-boot-starter:1.0.RC8.1现已修复。有关更多详细信息,请参阅以下答案和评论

4

1 回答 1

2

我是 Stormpath 的 Java Developer Evangelist。

我无法使用您的 zip 文件复制该行为。

但是,我们以前见过这种情况。它与浏览器积极缓存 302 重定向有关,尤其是针对localhost.

这是在 Chrome 中讨论该问题的参考:http: //kmarsden.com/chrome-redirect-cache/

清除缓存应该可以解决问题。

而且,这永远不会在生产环境中发生。

Firefox 交互的 gif

于 2016-01-19T23:37:10.603 回答