2016-01-19 50 views
2

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

A minimal example is available here as an archive。这是一个Gradle项目。 cd进入档案内的目录,并用./gradlew bootRun启动服务器。该应用程序将在http://localhost:8080访问。这需要一个Stormpath API密钥。注册,get an API key并将apiKey-XXX.properties文件复制到~/.stormpath/apiKey.properties。通过这种方式,Spring Boot将启动该文件并默认使用它(只有当您在Stormpath中定义了一个应用程序时)。

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

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

当我首次登录时,我可以看到名为account的cookie是为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释放它现在固定后。 See the following answer and the comments for more detail

+0

是否与SpringSecurity冲突? – Raffaele

+0

Tomcat 8.0中存在一个错误。30可能会导致这样的行为。请参阅https://github.com/spring-projects/spring-boot/issues/4937了解更多详细信息以及可能值得一试的可能解决方法 –

+0

我还无法运行您的应用程序,但在[ quickstart](https://docs.stormpath.com/java/spring-boot-web/quickstart.html)他们说你应该在你的'application.properties'中设置'stormpath.application.href',如果你有超过一个API密钥 - 并且我无法在链接的源代码中找到该配置 – Raffaele

回答

2

我是Stormpath的Java Developer Evangelist。

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

但是,我们之前看过这个。这与浏览器积极缓存302重定向有关,尤其是针对localhost

下面是讲这个问题在Chrome中的引用:http://kmarsden.com/chrome-redirect-cache/

清除缓存应采取照顾的问题。

而且,这将从来没有发生在生产环境。

gif of Firefox interaction

+0

感谢您的回应,将研究缓存的事情。已经想过 - 我已经禁用了Chrome开发者工具栏中的缓存,但有一个设置可以实现,但无济于事。我会再试一次,也许我忽略了一些东西。另外,你会介意在Chrome中快速尝试它吗? :) –

+0

如果我启用Firefox的“退出时清除历史记录”功能,我可以复制您的行为。随着'JSESSIONID'和'帐户'饼干被清除,当我重新启动浏览器,我不得不重新登录。我猜是什么,但启用在Firefox退出时清除cookie(对于每个主机)是一种*在我看来不好*。 :/另外,使用Chrome的dev设置清除缓存不起作用。 –

+1

我已确认您使用新鲜镀铬安装所看到的行为。我在这里登录了一个问题:https://github.com/stormpath/stormpath-sdk-java/issues/450我认为问题在于帐户cookie识别您登录到Stormpath,但它与解除关联Spring安全上下文。 Spring Security将'/'重定向到'/ login'(因为它应该)。 Stormpath认为你已经登录了,所以'/ login'将你重定向到'/'。一旦问题解决,我会跟进。 – afitnerd