我目前正通过appeidine中的openid使用联合身份验证 - 使用google,yahoo,myopenid作为提供商
有一个问题,我应该在我的数据库中存储什么来识别返回的用户。 我目前正在存储user.getNickname() - (对于google和yahoo,它会返回用户的电子邮件地址)。
User user = userService.getCurrentUser();
String username = user.getNickname();
我用它来存储和检索用户特定的数据。
这是正确的方法吗? getNickName()是唯一的吗?我看到User还有一个user.getUserId()方法和一个user.getEmailId()方法。
我应该使用user.getUserId()吗?
答案 0 :(得分:4)
getNickname()
- 请勿使用此功能。
getUserId()
- 这是合乎逻辑的,但问题可能是用户忘记了他们在您的网站上使用了哪个身份(我有多个谷歌帐户,加上雅虎和脸谱)。这可能会导致为一个人创建多个帐户。但是,有些人想要这个。此外,即使用户更改了自己的电子邮件,Google用户也会如此。
'getEmail()` - 实际上类似于ID - 唯一标识用户。如果用户使用别名电子邮件登录,则可以与ID不同。
无论如何,当用户第一次登录时,您应该使用“帐户详细信息”页面显示它们(如同SO一样)。此外,您应该让用户能够将身份聚合到一个帐户中。