如何继续使用新的OpenID用户

时间:2010-07-20 05:46:13

标签: web openid

我正试图找到面对这种情况的方法。

让我的数据库中的这些表与“本机”用户和“外部”用户相关,以记录“本机”用户和OpenId用户:

--native user--
id (primary key)
email (unique)
screen_name (unique)

--external user--
openid_id
native_user_id  

用户使用OpenId帐户登录时,我会创建一个新的“本机”用户并为其分配OpenId帐户标识符。在我自动创建这个新的“本机”用户之前,我尝试从OpenId获取一些信息,作为名称和电子邮件。如果两者都存在,则用户“神奇地”注册,但如果缺少某些字段,则向用户显示要求他填写信息的表单。

好的,现在是我的问题。

如果 OpenId用户登录该站点,并且OpenId为我提供了已分配给现有本机用户的电子邮件,我该如何处理? (请记住,电子邮件是我桌子上的一个独特字段)

  1. 要求他更改存储在我系统中的电子邮件
  2. 将此OpenId分配给我的数据库中的匹配项并登录用户。可能是同一个用户尝试使用不同的OpenId
  3. 登录
  4. 拒绝登录,即使可能是同一个用户尝试使用不同的OpenId登录。
  5. 拒绝登录,并警告访问者他必须在登录后为其用户分配新的OpenId。
  6. 就我个人而言,我认为我应该选择4,因为1可能导致人们意外地为他的第二个OpenId帐户创建一个新用户而没有被注意到。 对于路径nº2,我认为说新的OpenId对应于同一个用户是危险的。有人可以使用我系统中已有的电子邮件创建一个OpenId帐户,以获得对该本机用户的访问权。

    您怎么看?

    PD:我已经回答了这个问题:Create a new user with new openid login authlogic但不是我正在寻找的100%。

2 个答案:

答案 0 :(得分:2)

永远不要选择选项2:就像你说的那样,你不想让错误的人接触。除此之外,由您决定是拒绝访问还是允许访问,但要求用户提供不同的电子邮件地址。我不认为拒绝访问有多大意义,因为用户无论如何都可以用另一个电子邮件地址创建一个新的OpenID。

答案 1 :(得分:0)

为什么不删除电子邮件必须唯一的限制?您有一个唯一的ID,屏幕名称和(对于某些用户)openid URL。还不够吗?