代码之家  ›  专栏  ›  技术社区  ›  Manjoor

限制Google帐户中用户的单个会话

  •  2
  • Manjoor  · 技术社区  · 16 年前

    有没有可能强迫谷歌只为一个用户创建一个会话?

    我已经在GAE中创建了服务,它使用Google ID对用户进行身份验证。 现在单个用户通过共享从多台PC创建多个会话 他的用户名/密码。我想限制一下。

    在成功登录后,应用程序应以简单语言注销所有其他 此用户的会话。

    在Gmail中,页面底部有一个名为last activity details的链接。 单击“详细信息”,它将显示当前会话,并提供注销其他会话的选项。 会话。我希望以编程方式实现相同的功能。

    还有一个选项:登录前检测用户是否已登录 在?

    看看这个

    http://mail.google.com/support/bin/answer.py?ctx=%67mail&answer=45938

    看见 并发会话

    如果能以某种方式访问这些信息,我可以采取适当的行动。

    2 回复  |  直到 9 年前
        1
  •  3
  •   Drew Sears    16 年前

    当然有可能。

    如果您使用Google帐户进行身份验证,则用户通过将其凭据发布到Google来登录,Google将向您的网站返回一个身份验证令牌,该令牌随后存储在用户浏览器中作为cookie。在cookie过期(默认为24小时)或用户注销之前,令牌一直有效。

    如果要跟踪多个登录会话,可以编写设计为在登录或注销后运行的处理程序。如果您的正常登录后返回URL是“/do-tuff”,您可以将其更改为“/finish-login”?下一步=%2做什么。在该处理程序中,您可以在数据存储中创建一个表示会话的实体,其中引用了Google帐户、登录的IP地址和登录时间戳(当前时间戳)。您可以将会话实体密钥写入用户浏览器中的另一个cookie。完成后,重定向到“下一个”URL。

    注销后,您可以使用类似的处理程序来检查会话实体键cookie、删除实体和删除cookie。

    如果要向用户显示他们是从多个位置登录的,请查询与他们的Google帐户相关联的会话实体,这些会话实体的使用时间少于24小时(或者无论您的cookie过期时间设置为什么)。

    如果您想远程注销另一个会话,您可能需要编写自己版本的登录装饰器,该装饰器是Google在webapp.util中提供的。您的版本需要验证用户是否已登录,验证是否发送了会话密钥cookie,以及验证关联实体是否仍然存在以及是否属于正确的帐户。

        2
  •  2
  •   Riduidel    16 年前

    没有什么能阻止你在谷歌应用引擎数据服务中存储登录信息。 因此,您可以将用户的所有登录详细信息存储在其关联对象中。因此,我要说的是,GAE和传统的Web应用程序没有区别——只是您将登录信息存储在数据库中,而不是让Web前端处理它。

    推荐文章