Jak zaimplementować Logowanie wielu użytkowników za pomocą ASP.NET tożsamość

Opracowuję rozwiązanie Multi-tenant i chcę korzystać z najnowszego ASP.NET Identity framework w szczególności implementacja Entity Framework .

Zasadniczo muszę pozwolić dwóm użytkownikom na posiadanie tej samej nazwy użytkownika, choć musi ona być unikalna w obrębie dzierżawcy, chciałbym również skorzystać z zewnętrznych logowań, takich jak Twitter, Microsoft, Facebook i Google.

Z tego co wiem, framework nie został zaprojektowany z myślą o wielu dzierżawach, choć wydaje się aby umożliwić rozciągliwość. Wolałbym korzystać z jak największej ilości istniejących komponentów, choć w tej chwili myślę, że będę musiał porzucić implementację Entity Framework i sam je zakodować.

Czy ktoś jeszcze tego próbował i ile musiał sam kodować.

Author: James Skimming, 2013-11-18

2 answers

Mam teraz działające rozwiązanie, które udostępniłem w repozytorium GitHub:

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

[[0]} rozszerzalność wymagana do obsługi wielu dzierżaw nie jest możliwa w wersji 1.0.0 Microsoftu.AspNet.Tożsamość.EntityFramework (przynajmniej nie bez wielu niestandardowych prac), ale jest dostępny w wersji 1.1 alpha dostępnej obecnie za pośrednictwem Nightly ASP.NET Web Stack NuGet Pakiety .

Postanowiłem wydać to, co wyprodukowałem jako pakiet NuGet AspNet.Tożsamość./ Align = "left" / Multitenant , Jak stwierdzono obecnie wymaga Nightly ASP.NET Web Stack NuGet Packages .

Podałem dwie proste strony, które wykorzystują pakiet, aby umożliwić multi-dzierżawę:

  1. implementacja Vanilla , która jest standardowym projektem szablonu MVC5, który używa ciągu kluczy głównych.
    • zmiany niezbędne do commit.
  2. Integer Primary Key implementacja która wprowadza kilka innych dostosowań do użycia kluczy integer primary
    • zmiany niezbędne do zapewnienia multi-tenancy zostały wyodrębnione do tego commit .

Planuję zaktualizować rozwiązanie jako wersję 1.1 ASP.NET tożsamość zostaje uwolniona.

Mam nadzieję, że inni znajdą jakieś zastosowanie w pakiecie nuget, który mam wydany, wszelkie opinie są bardziej niż mile widziane i proszę zgłaszać wszelkie problemy, które znajdziesz .


Update

Rozwiązanie zostało zaktualizowane, aby używać wersji 2.0 Microsoft.AspNet.Tożsamość.EntityFramework .

 26
Author: James Skimming,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-28 10:09:30

Tak, wyraźnie zostawiliśmy to jako scenariusz rozszerzalności. Powinieneś być w stanie to zrobić poprzez nadpisanie właściwości UserManager i wdrożenie własnego niestandardowego IUserStore. Chociaż możesz potencjalnie również rozszerzyć EF UserStore i po prostu dodać tenantId do swojego użytkownika.

 3
Author: Hao Kung,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-18 17:42:55