【问题标题】:Java Play2 - From session to cookieJava Play2 - 从会话到 cookie
【发布时间】:2012-08-04 12:45:58
【问题描述】:

更新1:

你能给我一个关于如何在 play2 中管理 cookie 和会话的简短示例吗? (记住我功能)

好的,我想我了解播放身份验证背后的主要概念。

Zentasks 使用会话。我知道会话只存储在服务器上。 play2 中的会话已经签名。 Cookie 不是。

如果用户关闭浏览器也想登录怎么办?

我需要使用 cookie。

我该怎么办?

我是否创建一个用于创建会话的 cookie?

例如

  • 用户有一个有效的 cookie
  • 获取 cookie val 并创建一个新会话

或者我是否完全放弃会话而只使用 cookie。因为 cookie 不是 play2 自动签名的,所以我必须自己做,我做到了。

response().setCookie("remember",Crypto.sign(rnd) + "-" + obj.getClass().getName() + "-" + rnd,12000);

(我知道我还没有使用 secure 和 http only 标志使其安全)

我只是不想发明一个有缺陷的新系统。我希望你能帮我弄清楚如何在 play2 中确保身份验证安全。

【问题讨论】:

  • 没有“对不起”的地方;)我编辑了你的帖子。现在,请解释一下,“用户想要一个 cookie”是什么意思?
  • 为什么要求用户进行技术实现?只要确保创建一个有效且响应迅速的应用程序! BTW 会话始终由 cookie 管理:stackoverflow.com/questions/6398715/…
  • @biesior 我编辑了我的帖子。 (用户想要一个cookie?)->(如果用户即使关闭浏览器也想登录怎么办?)

标签: java session authentication cookies playframework-2.0


【解决方案1】:

Play 中的session scope 只不过是签名(安全)cookie(它们存储在客户端,而不是服务器端!)

来自上述文档:

请务必了解 Session 和 Flash 数据不是 存储在服务器中,但添加到每个后续 HTTP 请求中, 使用 Cookie。

因此您可以通过检查session scope's key 是否存在并与您的任何用户匹配来保持logged in 状态。

事实上的会话范围不会自动过期,因此您的用户将是logged in,直到他点击logout 操作链接(您只需在其中销毁会话的密钥)(仅在某些浏览器中)

【讨论】:

  • 好的,谢谢,但是如果我关闭浏览器,我的会话就会消失。我怎样才能防止这种情况发生?
  • @MaikKlein:你检查了吗?我只是在测试,即使在浏览器关闭并清除整个内存之后会话范围仍然可用。所以你应该担心,如果需要,如何销毁它;)
  • 真的吗?我仔细检查了它。我总是失去“饼干”。我试过 IE 和 chrome。我使用了命令-> play run
  • @MaikKlein:真的,真的,检查 tjis 简单测试:github.com/biesior/test-play-session
  • 还是不见了。但我目前在我的 linux 笔记本电脑上。出于好奇,我会在我的电脑上检查您的应用。
【解决方案2】:
猜你喜欢
  • 2012-04-22
  • 2019-10-31
  • 1970-01-01
  • 2012-08-05
  • 2010-11-29
  • 1970-01-01
  • 1970-01-01
  • 2015-10-23
  • 1970-01-01
相关资源
最近更新 更多