如何发挥验证饼干吗?
- 我注意到,我重新启动服务器后,我仍然登录,即使我没有在数据库presist任何会话数据。
- 我也注意到,我可以在服务器上设置的日期是cookie的exipry日期较大,仍然我登录。
- 我注销(保存在cookie来一个文本文件)和浏览器失去了饼干。 然后我重新从文本文件中的cookie,我再次登录。
饼干看起来是这样的:
PLAY_SESSION = e6443c88da7xxxxxxxxxxxxxxxxxxxxxxxxxxxxx-的userid%3A1
// My logout code
def logout() = Action {
Ok("").withNewSession
}
从文档
丢弃整个会话
还有就是放弃整个会议特别行动:
Ok("Bye").withNewSession
你没有指定你怎么验证用户的身份,所以我只是猜测,你;再利用简单的样品是...简单。
它使用用户的ID来识别用户,并检查是否签订会话cookie没有操纵,因此,如果你重新创建具有正确签名的cookie这将是有效的还是。
您应该创建会话的服务器端,即按键部分地区。 在DB或在内存中缓存(这将是比DB更快)。 其关键应该是随机生成(和preferebly相当长的)每个成功的登录操作,并且还应该包含数据,用以识别用户,有效期等。接下来,你应该把这个随机sess_key
已登录用户或ID的播放会话,而不是电子邮件地址他在DB行,并注销和/或到期后,应将其删除。 在即使你失去了cookie的这种情况后注销就无法与非esixting正常登录sess_key
。
AFAIR标准内存高速缓存将在应用程序的每次重新启动被清除,以确保所有sess_keys
从DB将被删除,以及可以使用全局对象和截断表onStart(...)
方法。
我找到了答案阅读文档更仔细,并结合不同的部分。
没有为会话没有技术暂停。 当用户关闭Web浏览器到期。 如果您需要为特定应用程序的功能超时,只是一个时间标记存储到用户会话和使用,它的应用需求(例如,最长会话持续时间,最大闲置时间等)。
要明白,会话和Flash数据不会被存储服务器,但被添加到每个后续的HTTP请求,使用cookie机制是很重要的。 这意味着数据量非常有限(最多4 KB),并且只能存储字符串值。
所以这是我担心如果cookie迷路任何人都可以登录到服务器的所有未来。
我要做的,以确保这是添加一个自制的时间戳授权(保存时间戳在cookie和验证服务器端)