如何在play框架中使用会话范围?

时间:2013-02-08 14:59:31

标签: playframework-2.0

我想为play框架实现一个认证系统 来自官方文件:

  

由于Session只是一个Cookie,它也只是一个HTTP标头,但Play提供了一个辅助方法来存储会话值:

好吧,你把内容存储在饼干中.....
无论如何,我注意到servlet 3.0声明新的会话范围比pla 2.0中使用的当前范围要好得多 目前,所有会话信息都存储在cookie中:这意味着您只能存储像user.id这样的最小数据,否则会出现激烈的http流量。
Servlet 3.0就像php会话一样工作:只有一个id由系统自动存储在客户端中, 而是在服务器中有所有会话数据。此外,每次针对cookie stealt攻击的请求都会重新生成cookie 我注意到Spring已经使用了这个规范“@scope(session)”,我认为这是游戏框架中最大的错误..(文档中的错误示例也不好)
它实际上不是可接受的当前系统,太慢和修指甲。

有一种方法可以使用servlet 3.0会话范围,还是打算在将来的版本中实现它?

尊重Nicola

1 个答案:

答案 0 :(得分:1)

会话:是的,这是事实,默认情况下Play的会话只存储在coookie范围内,我很确定这是出于某种目的。 Play clean实现旨在以最小的依赖性开始,因为它不仅针对使用强制数据库使用构建common Web应用程序而且其他typical内容可用,但是...有时您需要在自己上添加2cc

身份验证/授权:幸运的是,您不需要从头开始创建这些机制,只需要很少的公共可用模块。我最喜欢的是Joscha Feth的Play Authenticate - 完整的堆栈,授权和身份验证,多语言支持,多提供商支持(Facebook,Twitter等),角色和权限(使用Deadbolt2)等。

前段时间我还发布了我的示例,它构建在PA之上,它演示了更好的会话处理,它几乎完成了你想要的所有操作。它不会在每个请求上刷新sesId,但这只是一个小修改。你可以实现自己。此外,欢迎您发送更多想法,使会议更安全,我打开了!

源代码发布在我的fork中的2.0.4_sessions分支中。 Joscha有兴趣把它拉到官方PA样品,无论如何我想提供成品解决方案,所以 - 正如我写的,你可以加入:)