【问题标题】:ASP.NET Core Identity: Multiple providers for the same accountASP.NET Core 标识:同一帐户的多个提供程序
【发布时间】:2019-08-21 08:19:14
【问题描述】:

我一直在尝试围绕新的 ASP.NET Core Identity 框架。

我希望能够允许客户使用外部提供商登录,这样我就不必担心密码存储问题。如果我使用默认提供程序:.AddDefaultIdentity<EntityUser>() 和 .AddAuthentication(使用 AddFacebook、AddGoogle、AddMicrosoftAccount),这将有效。

有些人有一个谷歌帐户和一个 Facebook 帐户。我想允许用户登录到他们的帐户,然后为同一用户添加其他提供商(只要电子邮件匹配)。

AspNetCore 的身份框架部分似乎可以严格控制一切。我知道如何覆盖视图,但不知道如何覆盖控制流。我如何将自己的逻辑融入其强制登录、注册的流程中?当用户已经登录时,我还想将用户转发给外部提供商。

我所需要的只是一个方向,他们用新的 AspNetCore 将关注点分开了很多,以至于它类似于洋葱。这使得很难知道你想要什么。我什至不知道我不知道如何开始。

【问题讨论】:

  • afaik 它已经按照您想要的方式工作,用户可以添加您从管理控制器配置的任何提供程序,用户添加社交身份验证的选项应该适用于您配置的任何提供程序。它不会验证提供商的电子邮件是否相同,这并不重要,因为用户只能通过登录提供商来添加它,然后您就知道它是用户的社交帐户。并非所有社交服务提供商都会返回电子邮件,但无论如何,如果用户已经在您的网站上拥有一个包含电子邮件的帐户,则通过社交服务提供商登录不会更改用户的电子邮件。
  • 我不应该说managecontroller,从前它是一个控制器,但现在它是razorpages。你可以看到外部登录视图here
  • 当我设置它时它完全没有注册,但如果你去:~/Identity/Account/Manage/ExternalLogins 它完全按照我的意愿进行。他们最初的示例应用程序设置了一个名为 OpenIdConnect 的东西,带有一个 Account 控制器。我自己添加了剩下的。这个单独的控制器而不是身份框架是概念似乎发生冲突的地方。 @JoeAudette,请将您的原始消息与 Uri 的组合发布到帐户管理,我会接受它作为答案。

标签: c# asp.net-core asp.net-identity


【解决方案1】:

它已经按照您想要的方式运行,用户可以从 ~/Identity/Account/Manage/ExternalLogins 页面添加您配置的任何提供程序

您可以看到source code of the ExternalLogins razor page 的逻辑将显示用户将社交身份验证添加到其现有帐户的选项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    • 2019-04-28
    • 2010-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多