我正试图找到面对这种情况的方法。
让我的数据库中的这些表与“本机”用户和“外部”用户相关,以记录“本机”用户和OpenId用户:
--native user--
id (primary key)
email (unique)
screen_name (unique)
--external user--
openid_id
native_user_id
当新用户使用OpenId帐户登录时,我会创建一个新的“本机”用户并为其分配OpenId帐户标识符。在我自动创建这个新的“本机”用户之前,我尝试从OpenId获取一些信息,作为名称和电子邮件。如果两者都存在,则用户“神奇地”注册,但如果缺少某些字段,则向用户显示要求他填写信息的表单。
好的,现在是我的问题。
如果新 OpenId用户登录该站点,并且OpenId为我提供了已分配给现有本机用户的电子邮件,我该如何处理? (请记住,电子邮件是我桌子上的一个独特字段)
就我个人而言,我认为我应该选择4,因为1可能导致人们意外地为他的第二个OpenId帐户创建一个新用户而没有被注意到。 对于路径nº2,我认为说新的OpenId对应于同一个用户是危险的。有人可以使用我系统中已有的电子邮件创建一个OpenId帐户,以获得对该本机用户的访问权。
您怎么看?
PD:我已经回答了这个问题:Create a new user with new openid login authlogic但不是我正在寻找的100%。答案 0 :(得分:2)
永远不要选择选项2:就像你说的那样,你不想让错误的人接触。除此之外,由您决定是拒绝访问还是允许访问,但要求用户提供不同的电子邮件地址。我不认为拒绝访问有多大意义,因为用户无论如何都可以用另一个电子邮件地址创建一个新的OpenID。
答案 1 :(得分:0)
为什么不删除电子邮件必须唯一的限制?您有一个唯一的ID,屏幕名称和(对于某些用户)openid URL。还不够吗?