Google App Engine登录与应用程序登录

时间:2014-12-15 00:47:29

标签: google-app-engine

我在GAE上部署了一个应用程序。它允许用户注册一个帐户,我使用谷歌用户ID作为链接到他们帐户的主键。

如果用户未经Google认证和/或我们的网站上没有帐户,我的注册链接应该是可见的。

我想弄清楚的是,如果用户在我的网站上有一个帐户,从页面到页面,最好的方法是什么。我有一个在每个页面上触发的身份验证过滤器,过滤器会查看他们的Google ID(如果他们已登录),关闭并确定用户是否在我的网站上有帐户,并设置请求参数,即我在jsp中使用以确定是否显示注册链接。

每次都这样做似乎很浪费,所以我重构了它并让身份验证过滤器在会话中存储与我们站点上的用户帐户绑定的Key对象。如果key属性不为null,我认为这意味着用户已在我的站点上注册。

这看起来合乎逻辑,还是有更好的方法?我的复杂性来自用户可能使用谷歌登录的事实,但这并不一定意味着他们在我的网站上拥有一个帐户。

我的问题

1 个答案:

答案 0 :(得分:1)

在存储身份验证数据时,您有两种选择:

  • 将数据存储在会话中
  • 将数据存储在客户端,通常是一个cookie

将数据存储在会话中是一种非常有效的机制,而这实际上是最常见的。

但是,管理会话的成本很高(您需要存储它)。在App Engine的情况下,会话存储在数据存储区中,可能还有一些缓存。所以它仍然是对数据存储区的调用。

这应该是完全可以接受的,但如果事实证明管理会话确实会降低应用程序的性能,则可以始终将数据存储在加密的cookie中。这样,每次发送HTTP请求时,浏览器都会提供信息。请注意,这意味着您必须正确加密,并且HTTP请求会稍微大一些(加密数据的大小)。

所以最后这是一个权衡。除非遇到性能问题,否则我建议坚持使用会话。会话的优势(与您的第一种方法相比)是,如果您想要存储其他数据,您将需要添加更少的代码。