重定向后播放会话被清除
Play Session being cleared after redirect
背景:我已经为应用程序实施了 "post-login redirection"。 AKA 如果用户未登录,但尝试打开任意页面,他们将在登录后被重定向到该页面(与我们的默认仪表板相反)。
一开始似乎一切正常 - 登录效果很好,用户数据被添加到会话中,用户被重定向到目标 URI。但是,加载目标 URI 后,Play 也会清除会话 cookie,并且用户会注销。
无论最终终点是什么,都会发生这种情况。奇怪的是,如果我明确地将会话添加到端点的响应中,那么就没有问题。例如,更改:
Ok(views.html.dashboard.profile(data))
收件人:
Ok(views.html.dashboard.profile(data)).withSession(session)
虽然这可以解决问题,但这不是一个合适的解决方案。我不想将会话显式添加到应用程序中的每个端点 - 我希望 .withSession(session)
行为是默认情况下发生的。
是什么导致会话 cookie 被这样清除?
经过一些实验,我们确定问题很可能是我们一直使用的 Play 版本 (v2.1.1) 中的一些错误。我们测试了升级到 v2.1.3 并且似乎不再有任何问题。不幸的是,在发行说明中没有注意到任何可能解释发生了什么的内容。
背景:我已经为应用程序实施了 "post-login redirection"。 AKA 如果用户未登录,但尝试打开任意页面,他们将在登录后被重定向到该页面(与我们的默认仪表板相反)。
一开始似乎一切正常 - 登录效果很好,用户数据被添加到会话中,用户被重定向到目标 URI。但是,加载目标 URI 后,Play 也会清除会话 cookie,并且用户会注销。
无论最终终点是什么,都会发生这种情况。奇怪的是,如果我明确地将会话添加到端点的响应中,那么就没有问题。例如,更改:
Ok(views.html.dashboard.profile(data))
收件人:
Ok(views.html.dashboard.profile(data)).withSession(session)
虽然这可以解决问题,但这不是一个合适的解决方案。我不想将会话显式添加到应用程序中的每个端点 - 我希望 .withSession(session)
行为是默认情况下发生的。
是什么导致会话 cookie 被这样清除?
经过一些实验,我们确定问题很可能是我们一直使用的 Play 版本 (v2.1.1) 中的一些错误。我们测试了升级到 v2.1.3 并且似乎不再有任何问题。不幸的是,在发行说明中没有注意到任何可能解释发生了什么的内容。