我在多租户应用程序中使用 ASP.NET Identity 2 Framework (ASP.NET MVC 5)。
我可以轻松集成 Facebook 应用程序。它可以在 Startup.cs 中配置它的范围/凭据等。
但是我有 x 个域和 x 个 Facebook 应用程序,我将决定在运行时使用哪些凭据。
如何动态更改/设置外部登录提供程序设置,而不是在应用程序启动时?
我在多租户应用程序中使用 ASP.NET Identity 2 Framework (ASP.NET MVC 5)。
我可以轻松集成 Facebook 应用程序。它可以在 Startup.cs 中配置它的范围/凭据等。
但是我有 x 个域和 x 个 Facebook 应用程序,我将决定在运行时使用哪些凭据。
如何动态更改/设置外部登录提供程序设置,而不是在应用程序启动时?
Identity 2 框架不支持设置或注册动态外部登录提供程序(例如能够更改 Facebook clientId 凭据)。您将不得不手动设置我们自己的解决方案。
该框架基于 OWIN,因此控制器只能通过使用共享上下文将消息传递给身份验证提供程序。由 ASP.NET 标识系统提供的不支持中继这类消息(例如您要更改的凭据)。OWIN 不允许您更改已绑定的 MiddleWare 对象的设置。
此外,Microsoft 为每个主要外部登录提供程序(即 Facebook)的身份系统提供的扩展是使用我们无法继承或修改的内部类构建的。所以这让我们陷入困境。
您可以为 facebook 使用自己的 OWIN MiddleWare 提供程序,并使用共享上下文 - 这应该是现代的做事方式。或者只是使用常规的 MVC 系统来处理这个问题。您可以使用他们的Identity Facebook Extension的源代码作为指南。