Fro*_*røm 12
你的问题涉及到它的主要部分:
如果身份提供者(IP)是您自己的身份提供者(IP),通常两者的处理方式不同,这是迄今为止Web应用程序中最常见的设置.
使用Google等OpenId Provider时,身份验证部分会与您的控件分开.您将获得一个令牌,告诉您用户是否经过身份验证.令牌通常包含以下声明:名称,电子邮件和命名标识,其中最后一个是IP上标识的唯一标识.
到现在为止还挺好.
诀窍现在就像你问的那样,我如何授权这个用户?
好吧,有几种方法可以解决这个问题.
首先,当您在系统中创建本地用户时,您可以根据从IP获得的声明预填充名称和电子邮件值.在此过程中,您可以开始并说明系统中存储了配置文件的所有用户都已获得授权,或者您可以开发进一步的流程,以添加您需要了解的有关用户的任何详细信息.
那么,如果用户从谷歌切换到Facebook作为IP,你怎么避免重新注册?
这是事情变得棘手的地方.Google,Yahoo,Facebook将向您提供的最常见声明是电子邮件地址和姓名.因此,您可以做的是尝试将应用程序中的现有客户与进程索赔相匹配.然而,这不是故障保护,因为人们可以在不同的系统中拥有不同的电子邮件.
名称值也不安全.
在我们的设置中,我们首先匹配电子邮件,因为我们知道大多数IP都会验证电子邮件地址.这将大大减少重复.在检查之后,我们开始自己的验证过程,其目标是查看此人是否已经注册.此过程在我们的数据库中查找客户的手机号码,如果找到匹配项,我们会向客户发送一次性密码以验证电话号码的正确所有权.
由于登录是一个时间敏感的设置,我们创建了一个简单的SQL表,将外部身份映射到我们的客户编号.这允许我们在所有Web应用程序之外实现这种验证逻辑(从而减少代码冗余)
对我来说,最简单的方法就是拥有一个基本的用户表,在这里你可以在寄存器中添加用户,并有一个额外的1:n表,您可以在其中保存可能的身份验证.也许你需要多个表,如果有方法,需要比其他更多的列.
| 归档时间: |
|
| 查看次数: |
2411 次 |
| 最近记录: |