我正在创建一个类似stackoverflow的用户注册页面。为此,我必须给用户一个机会,如果他有任何帐户已经存在于第三方网络,如脸书,推特,谷歌或linkedin,然后代替自定义注册。
我需要将他们的第三方网络ID、电子邮件、姓名保存在我的数据库中的用户表中。这样,如果那个特定的用户来提供类似的用户名,并且他的身份验证成功,那么我可以让他访问我网站上的用户页面。(我对保存第三方网络社交网络的密码不感兴趣)
我有点困惑我该如何构建这样的系统,有人告诉我openid和openauth,但我不确定哪一个能给我正确的结果?
对于这个问题,选择使用openid
还是openauth
并不重要,两者都将为您提供用户身份。我倾向于这样做:
table users_openids(identity, user_id, created, last_used, ...)
然后,它允许您的用户附加多个身份,以便在您希望从其中许多用户导入数据的情况下使用。
要通过身份登录,只需在主表中查找user_id即可。
因此,对于现有用户,只需为他们添加一行,对于新用户,请同时插入一个具有NULL密码的新用户,并确保在应用程序逻辑中正确处理它。因为你应该使用散列,所以如果有人输入NULL,你永远不会匹配。