playframework session 原理

来源:互联网 发布:淘宝靠谱ipad二手店铺 编辑:程序博客网 时间:2024/06/03 22:39

1.  什么是session

session 在整个用户会话中是可用的,但Flash只能用于下一个请求中。

理解Session和Flash并不是存领教于服务器上,而是添加到每个HTTP请求中是很重要的,本质上是使用cookie机制。也就意味着,数据量不能超过4KB,因此只能存储一些字符串值。

cokkie默认的名字是PLAY_SESSION,并且这个名字是可以在application.conf中自定义的。

eg: application.session.cookie=CGZ

如果cookie的名字改变了,更早的cookie将会被遗弃。

当然,cookie的值是被密钥签名过的,所以客户端并不能改变cookie的值。

值得注意的是:Play的Session不是为了用作缓存而设计的。如果你需要缓存一些和特别session相关的数据,你可以使用Play内置的缓存机制,存储一个唯一的ID在用謵的Session中,以保持它他和特定的用户关联。

默认情况下,从技术上说,Play Session不会存在超时的问题。Session 在用户关闭浏览器时,便到期了。如果你为一个特殊的需求,需要更多样的超时,你可以存储一个时间戳到用户的Session中。可以设置一个最大的生存期,最大的不活动时间。

你可以设定session cookie的最大生存时间,通过 paly.http.session.maxAge在application.conf中设置,值得注意的是,这不能阻止黑客在生存期结束前保持和重用cookie


2. 在session中存储数据

就像session只是一个cooklie一样,session中的数据也只是一个http 请求的Header。你可以使用操作其他结果属性那样操纵这种数据,Play还提供一种有用的方法去存储session的值

eg:

public Result login(){

    session("connected","user@gmail.com");

    return ok("welcome");

}

也可以移除任何值通过传入的session 

eg:  session().remove("connected");

0 1
原创粉丝点击