Comment implémenter une connexion utilisateur multi-locataires en utilisant ASP.NET identité

Je développe une solution multi-locataires et je veux utiliser la dernière ASP.NET Identity framework spécifiquement l'implémentation Entity Framework .

Fondamentalement, je dois permettre à deux utilisateurs d'avoir le même nom d'utilisateur, même s'il doit être unique au sein d'un locataire, j'aimerais également utiliser des connexions externes telles que Twitter, Microsoft, Facebook et Google.

D'après ce que je peux dire, le cadre n'a pas été conçu avec la multi-location à l'esprit, bien qu'il semble pour permettre l'extensibilité. Je préférerais utiliser autant de composants existants que possible, bien que pour le moment je pense que je vais devoir abandonner l'implémentation Entity Framework, et tout coder moi-même.

Quelqu'un D'autre a-t-il essayé cela et combien ont-ils dû se coder.

23
demandé sur James Skimming 2013-11-18 02:38:38

2 réponses

J'ai maintenant une solution de travail que j'ai partagée dans un référentiel GitHub:

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

L'extensibilité requise pour prendre en charge la multi-location n'est pas possible avec la version 1.0.0 de Microsoft.AspNet.Identité.EntityFramework (du moins pas sans beaucoup de travail personnalisé), mais est disponible dans la version 1.1 alpha actuellement disponible via le Nightly ASP.NET pile Web NuGet Paquets .

J'ai décidé de publier ce que j'ai produit en tant que paquet NuGet AspNet.Identité.EntityFramework.Multitenant , comme indiqué, il nécessite actuellement le nuit ASP.NET les paquets NuGet de la pile web .

J'ai fourni deux sites simples qui utilisent le paquet pour permettre la multi-location:

  1. implémentation Vanilla qui est le projet de modèle MVC5 standard qui utilise une chaîne de clés primaires.
    • Les changements nécessaires pour fournir multi-location ont été isolés à cette commit .
  2. implémentation de clé primaire entière {[4] } qui effectue quelques personnalisations supplémentaires pour utiliser des clés primaires entières

Je prévois de mettre à jour la solution en tant que version 1.1 de ASP.NET L'identité est libérée.

J'espère que d'autres trouveront une certaine utilisation dans le paquet nuget que j'ai publié, tout commentaire est plus que bienvenu et veuillez soulever tous les problèmes que vous trouvez .


Mise à jour

La solution a maintenant été mise à jour pour utiliser la version 2.0 de Microsoft.AspNet.Identité.EntityFramework .

26
répondu James Skimming 2014-08-28 10:09:30

Oui, nous avons explicitement laissé cela comme un scénario d'extensibilité. Vous devriez pouvoir le faire en remplaçant les propriétés UserManager et en implémentant votre propre IUserStore personnalisé. Bien que vous pourriez être en mesure d'étendre L'EF UserStore potentiellement et juste ajouter un tenantId à votre utilisateur.

3
répondu Hao Kung 2013-11-18 17:42:55