3

我目前在 appengine 中通过 openid 使用联合身份验证 - 使用 google、yahoo、myopenid 作为提供者

有一个关于我应该在我的数据库中存储什么以识别返回用户的问题。我目前正在存储 user.getNickname() - (对于谷歌和雅虎,这将返回用户的电子邮件地址)。

User user = userService.getCurrentUser();
String username = user.getNickname();

我用它来存储和检索用户特定的数据。

这是正确的方法吗?getNickName() 是唯一的吗?我看到 User 也有一个 user.getUserId() 方法和一个 user.getEmailId() 方法。

我应该改用 user.getUserId() 吗?

4

1 回答 1

4
  1. getNickname()- 不要使用这个。

  2. getUserId()- 这是合乎逻辑的,但问题可能是如果用户忘记了他们在您的网站上使用的身份(我有多个谷歌账户,还有雅虎和脸书)。这可能导致为一个人创建多个帐户。但是,有些人想要这个。此外,即使 Google 用户更改了电子邮件,这仍然是一样的。

  3. 'getEmail()` - 实际上类似于 ID - 唯一标识用户。如果用户使用别名电子邮件登录,则可以与 ID 不同。

无论如何,当用户第一次登录时,您应该向他们展示“帐户详细信息”页面(就像 SO 一样)。此外,您应该让用户能够将身份聚合到一个帐户中。

于 2011-03-06T19:28:16.463 回答