我现在在我的网站上运行了大量的OAuth登录。我的实现基于WebSecurity类,并修改了代码以满足我的需求(我将WebSecurity源提取到了我的中)。
但是我现在面临一系列新问题。在我的应用程序中,我选择将用户电子邮件地址作为选择的登录标识符。它自然是独一无二的,适合这种用例。
然而,OAuth“标准”再次出现。
某些提供商会将您的电子邮件地址作为“用户名”(Google)返回,有些会返回显示名称(Facebook)。根据我的具体情况,我看到了两个选项:
选项1 将更多框架源代码添加到我的解决方案中,直到我可以追逐OpenIdRelyingParty类实际与之交互的位置(通过DotNetOpenAuth.AspNet外观),并从OpenID提供程序发出附加信息请求。
选项2 当用户首次使用OpenID提供程序登录时,我可以显示一种“完整注册”表单,该表单根据所选的提供程序请求缺少的信息。*
选项2是最直接的,可能是最快的实现,但也包括一些代码气味,因为必须根据所选的提供程序做一些不同的事情。
选项1需要更长的时间,但最终会使事情更具未来性。我需要在线下进行更丰富的互动,这样在这方面也有优势。
我越多地进入代码,似乎WebSecurity类本身实际上是非常有限的,因为它在使集成更容易的名义中隐藏了许多有用的DotNetOpenAuth功能。
安德鲁(DNOA的作者)曾说过,属性交换的内容发生在OpenIdRelyingParty类中,但是我无法从使用此类的DotNetOpenAuth.AspNet源代码中看到,所以我不确定需要什么来源拉入我的代码以启用我需要的功能。有没有人完全相似?
答案 0 :(得分:1)