Webapp2 - 当用户从其他浏览器登录时,用户登录会话无效

时间:2012-09-12 15:34:54

标签: python session sessionid webapp2

我在webapp2应用程序中有以下要求。当用户离开他的机器或浏览器时,应终止该用户以前的身份验证会话。

当用户从另一台计算机登录时,我可以通过在登录时将remote_addr存储在User对象中来执行此操作。当请求用户的会话时,我在登录时根据用户的remote_addr检查remote_addr。

我对这个解决方案不满意,因为当用户在代理服务器后面时它不起作用,并且当用户使用不同的浏览器时它也不起作用。

webapp2是否在某处存储了会话ID,因此我可以使用它来查看用户是否已在新会话中登录?

3 个答案:

答案 0 :(得分:0)

修改您已经做的事情:当用户登录时,创建唯一/随机令牌并将其存储在用户对象中,并在浏览器中设置cookie。当请求用户的会话时,检查两个令牌(来自请求cookie和用户对象)是否匹配,如果不匹配,则烧毁会话。

它只是相同但不是remote_addr而是使用您在登录时生成并设置为cookie的随机令牌。

答案 1 :(得分:0)

当您在浏览器会话中首次打开网站时,会创建一个网站会话。

当他登录时,您只需将会话ID存储在数据库中。 您需要有一个包含活动登录的漂亮表。 如果您希望在他关闭并稍后重新启动浏览器时让他保持登录状态,您也可以在浏览器中设置cookie。 显然,如果cookie存在,则将会话ID修改为cookie中的会话ID。

浏览器之间不共享Cookie,因此在这种情况下,如果他从新浏览器登录,则会更改活动登录表中的会话ID。

此外,您还需要一个小的ajax来检查当前会话是否每5分钟左右仍处于活动状态,如果没有则将其记录下来。

答案 2 :(得分:-1)