我需要添加社交登录到一个网站,已经有一个用户系统,这是非常简单的,它只存储一个电子邮件和密码,这是关于它。我需要添加脸书和推特登录选项,但我面临着一个困难,找出如何与当前系统集成,因为它在email有一个唯一的索引,所以当用户尝试使用社交帐户登录时,我首先获得他们的详细信息,并检查该电子邮件是否已经注册,如果没有,则我自动注册他们,然后登录,随后的登录请求找到电子邮件,并自动登录用户。
当用户通过普通的注册表注册后,问题来了,然后我可以使用给定的电子邮件创建一个假的社交媒体帐户,然后可以简单地登录到该网站上的用户帐户,因为他们没有使用该电子邮件的社交媒体帐户。
我想我可以添加一个列"regMethod“,指出使用了哪种注册方法,并使其成为一个复杂的唯一键(email, regMethod),并将0设置为原生形式,1 facebook,2 twitter,然后在登录用户时进行比较,但这对我来说似乎相当麻烦。此外,如果单个用户出于某种原因使用所有登录方法,则将有多个帐户,而不是只有一个帐户,这是一个问题。
我非常确定这个问题肯定有更好的解决方案,而且已经有人克服了它,所以我觉得我会重新发明轮子试图解决它。这在现实中是如何做到的?
发布于 2016-05-31 19:21:58
我在一个允许不同类型登录(本地或使用facebook帐户)的站点上使用的一个简单可行的解决方案是,通过对用户帐户数据和身份验证数据使用不同的表,将用户帐户数据与身份验证数据分开。
首先,我为用户数据创建了一个表。然后,您将有两个用于可能的身份验证的表,一个LocalAuthentication包含与您的本地身份验证方法相关的任何内容,如盐、密码哈希等。然后,您还将拥有表FacebookAuthentication,它只需要包含一个facebook访问令牌。这两个表都需要引用UserTable。
这样一来,单个用户就可以对同一帐户进行多次身份验证。
发布于 2016-05-31 19:31:58
只需将facebook_id和twitter_id添加到用户表中。然后,您将有两个选择:
不要忘记存储facebook_id或用户使用该接口时将获得的twitter_id。
https://stackoverflow.com/questions/37544015
复制相似问题