multi-tenant entity-framework-6 asp.net-identity

multi tenant - Cómo implementar el inicio de sesión multiusuario de usuarios utilizando la identidad de ASP.NET



multi-tenant entity-framework-6 (2)

Ahora tengo una solución de trabajo que he compartido en un repositorio de GitHub:

https://github.com/JSkimming/AspNet.Identity.EntityFramework.Multitenant

La extensibilidad requerida para admitir la tenencia múltiple no es posible con la versión 1.0.0 de Microsoft.AspNet.Identity.EntityFramework (al menos no sin mucho trabajo personalizado), pero está disponible en la versión 1.1 alfa actualmente disponible a través de Nightly Paquetes NuGet de la pila web ASP.NET .

Decidí lanzar lo que he producido como un paquete AspNet.Identity.EntityFramework.Multitenant , según lo establecido, actualmente requiere los paquetes NuGet de la pila web ASP.NET de Nightly .

He provisto dos sitios simples que hacen uso del paquete para permitir la tenencia múltiple:

  1. Implementación de vainilla, que es el proyecto de plantilla MVC5 estándar que utiliza una cadena de claves primarias.
    • Los cambios necesarios para proporcionar la tenencia múltiple se han aislado de este commit .
  2. Implementación de clave primaria integral que está realizando algunas personalizaciones más para usar claves primarias enteras
    • Los cambios necesarios para proporcionar la tenencia múltiple se han aislado de este commit .

Planeo actualizar la solución cuando se lance la versión 1.1 de ASP.NET Identity.

Espero que otros encuentren algo de utilidad en el paquete nuget que he lanzado, cualquier comentario es más que bienvenido y plantea cualquier problema que encuentres .

Actualizar

La solución ahora se ha actualizado para usar la versión 2.0 de Microsoft.AspNet.Identity.EntityFramework .

Estoy desarrollando una solución Multi-tenant y quiero usar el último marco de Identidad de ASP.NET específicamente para la implementación del Entity Framework .

Básicamente, necesito permitir que dos usuarios tengan el mismo nombre de usuario, aunque debe ser único dentro de un inquilino, también me gustaría hacer uso de registros externos como Twitter, Microsoft, Facebook y Google.

Por lo que puedo decir, el marco no se diseñó teniendo en cuenta el concepto de tenencia múltiple, aunque parece permitir la extensibilidad. Preferiría utilizar la mayor cantidad posible de componentes existentes, aunque en este momento creo que tendré que abandonar la implementación de Entity Framework y codificarlo todo yo mismo.

¿Alguien más ha intentado esto y cuánto han tenido que codificarse ellos mismos?


Sí, dejamos esto explícitamente como un escenario de extensibilidad. Debería poder hacer esto mediante la modificación de las propiedades de UserManager y la implementación de su propio IUserStore personalizado. Aunque es posible que también pueda extender EF UserStore potencialmente y simplemente agregar un ID de usuario a su usuario.