2011-10-09 55 views
3

是否有人必须确保Play Framework中给定的用户名/密码仅存在单一登录会话? (因此,不同计算机上的10个用户不能同时使用相同的用户名/密码登录)。我能想到的两种可能性是:实施单个并发用户登录会话的播放框架

1)将时间戳变量添加到数据库中的用户类,并在每次控制器访问时更新为当前时间。如果时间戳没有超时时间(可能为30分钟),则在注销时清空时间戳,并且不允许该用户的登录。如果用户的浏览器或计算机崩溃,将无法登录30分钟。 2)与Java EE Servlets一样,创建一个sessionId cookie,在登录时将其保存为用户记录,并且只允许包含它的请求(直到注销或超时),但这会有与#1相同的缺点。

任何想法都会受到欢迎。

回答

2

就个人而言,我会去选择2

如果保存的用户ID到您的会话cookie,然后保存的Cookie ID与您的用户,那么你就会有用户和计算机,他们之间的联系活跃于。您还需要存储上次活动时间,以便在特定的超时时间后,您可以从用户清除cookieId。

浏览器/计算机崩溃的问题可以通过在application.conf会话cookie超时而被克服

application.session.maxAge=1h 

看到的 - http://www.playframework.org/documentation/1.2.3/configuration#application.session.maxAge

最后,你将不得不处理从不同位置登录的人员,因此您可能需要“从所有其他位置注销”选项,例如GMail。