2012-08-07 98 views
4

UPDATE1:的Java Play2 - 从会话使用网站

能给我如何在play2管理cookie和session很短的例子吗? (记住我的功能)

好吧我想我理解播放验证背后的主要概念。

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

如果用户希望即使他关闭浏览器也要登录,该怎么办?

我需要使用cookie。

我该怎么办?

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

例如

  • 用户有一个有效的cookie
  • 得到饼干VAL并创建一个新的会话

还是我完全丢弃会话并只用饼干代替。因为cookie不是由play2自动签名的,所以我必须自己做,我也是这么做的。

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

(我知道我没有做它用安全和http仅标志又安全)

我只是不希望发明一种新的和有缺陷的系统。我希望你能为我清楚如何在play2中进行身份验证。

+0

没有什么地方“我sorries”;)我编辑您的文章。现在,请解释一下,这是什么意思,'用户想要一个cookie'? – biesior 2012-08-07 13:44:46

+0

为什么要求用户进行技术实施?只要确保创建一个工作和响应应用程序! BTW会话总是由cookies管理:http://stackoverflow.com/questions/6398715/difference-between-creating-a-session-and-a-cookie – adis 2012-08-07 13:46:45

+0

@biesior我编辑了我的文章。 (用户想要一个cookie?) - >(如果用户想要关闭浏览器也想登录会怎么样?) – 2012-08-07 13:48:11

回答

3

在玩的session scope无非是签署(安全)饼干

从上面的文档(和它们存储在客户端的,服务器端!):

了解这一点很重要该会话和闪存数据不是 存储在服务器中,但被添加到每个后续HTTP请求, 使用Cookie。

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

事实上的会话范围不会自动到期,所以你的用户会logged in,直到他将在logout行动点击链接(在你只需要销毁会话的密钥)(只在某些浏览器)

+0

好的谢谢,但是如果关闭浏览器,我的会话就不见了。我怎样才能防止这一点? – 2012-08-07 14:10:02

+0

@MaikKlein:你看过了吗?我只是在测试,即使在浏览器关闭并清除整个内存之后,会话范围也是可用的。所以你应该担心,如果需要的话如何摧毁它) – biesior 2012-08-07 14:25:47

+0

真的吗?我再次检查它。我总是失去“饼干”。我试过IE和Chrome。我用命令 - >运行 – 2012-08-07 14:31:31