使用 Stormpath 和 Spring Boot(基于 this tutorial ),在我启动服务器并使用我的凭据成功登录后,一切正常。但是,当我退出浏览器并尝试打开我的应用程序时,我遇到了重定向循环。
一个minimal example is available here as an archive 。这是一个 Gradle 项目。 cd
进入存档内的目录,并使用 ./gradlew bootRun
启动服务器。该应用程序可通过 http://localhost:8080 访问。 。为此需要 Stormpath API key 。注册 get an API key并将 apiKey-XXX.properties 文件复制到 ~/.stormpath/apiKey.properties
。这样,Spring Boot 将获取该文件并默认使用它(仅当您在 Stormpath 中定义了单个应用程序时)。
登录,然后退出浏览器(在 Mac 上,不要仅使用红色按钮关闭它,使用 command-q 或右键单击浏览器图标并退出)。重新启动并尝试访问http://localhost:8080再次。那是我得到重定向循环的时候。在 Mac 和 Windows、Firefox 和 Chrome 上尝试过,同样的情况发生。
如果我打开开发者控制台,我可以看到首先我被重定向到登录页面(这很公平),然后我被重定向到 /
(奇怪)等等......
当我第一次登录时,我可以看到为 localhost 创建了一个名为 account
的 cookie,并且还创建了一个 JSESSIONID
。当我重新启动浏览器时,account
cookie 完好无损,并且 JSESSIONID
由服务器重新生成。所以我猜想这种行为与 JSESSIONID
绑定(bind)到登录 session 或其他东西有关。
有办法配置此行为吗?浏览器重新启动后,用户应该 a) 仍然登录或 b) 能够再次登录。有什么想法吗?
另外,顺便说一句,我使用 AngularJS 应用程序作为我的前端。我认为这不会有任何区别,但我认为这可能很重要(示例应用程序为此目的包含一些 AngularJS hello world 代码)。
更新
该问题被 Stormpath 标记为错误,在发布 com.stormpath.spring:stormpath-default-spring-boot-starter:1.0.RC8.1 后现已修复。 See the following answer and the comments for more detail .
最佳答案
我是 Stormpath 的 Java 开发人员传播者。
我无法使用您的 zip 文件复制该行为。
但是,我们之前已经见过这种情况。这与浏览器积极缓存 302 重定向有关,尤其是针对 localhost
。
以下引用资料涉及 Chrome 中的问题:http://kmarsden.com/chrome-redirect-cache/
清除缓存应该可以解决该问题。
而且,这在生产环境中永远不会发生。
关于angularjs - Stormpath Spring Boot 重定向循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34886331/