使用 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
。当我重新启动浏览器时,account
cookie 完好无损JSESSIONID
并由服务器重新生成。所以我猜这种行为与JSESSIONID
绑定到登录会话或其他东西的事实有关。
有没有办法配置这种行为?重新启动浏览器后,用户应该 a) 仍然登录或 b) 能够再次登录。任何的想法?
另外,附带说明一下,我使用 AngularJS 应用程序作为我的前端。我不认为这应该有任何区别,但我认为它可能很重要(示例应用程序为此包含一些 AngularJS hello world 代码)。
更新
该问题已被 Stormpath 标记为错误,并且在发布后com.stormpath.spring:stormpath-default-spring-boot-starter:1.0.RC8.1
现已修复。有关更多详细信息,请参阅以下答案和评论。