Come implementare il login utente multi-tenant usando l’id quadro di ASP.NET

Sto sviluppando una soluzione multi-tenant e voglio utilizzare la più recente struttura di identity framework ASP.NET in particolare l’implementazione di Entity Framework .

Fondamentalmente ho bisogno di consentire a due utenti di avere lo stesso nome utente, anche se deve essere unico all’interno di un titolare, mi piacerebbe anche fare uso di accessi esterni come Twitter, Microsoft, Facebook e Google.

Da quello che posso dire, il framework non è stato progettato pensando alla multi-tenancy, anche se sembra consentire l’estensibilità. Preferirei utilizzare tutti i componenti esistenti possibili, anche se al momento penso che dovrò abbandonare l’implementazione di Entity Framework e codificarla da sola.

Qualcun altro ha provato questo e quanto hanno dovuto codificarsi.

    Ora ho una soluzione funzionante che ho condiviso in un repository GitHub:

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

    L’estensibilità richiesta per supportare la multi-tenancy non è ansible con la versione 1.0.0 di Microsoft.AspNet.Identity.EntityFramework (almeno non senza un sacco di lavoro personalizzato), ma è disponibile nella versione 1.1 alpha attualmente disponibile attraverso Nightly Pacchetti NuGet di Stack Web ASP.NET .

    Ho deciso di rilasciare ciò che ho prodotto come pacchetto NuGet AspNet.Identity.EntityFramework.Multitenant , come affermato attualmente richiede i pacchetti NuGet dello stack Web Nightly ASP.NET .

    Ho fornito due siti semplici che utilizzano il pacchetto per consentire la multi-tenancy:

    1. Implementazione Vanilla che è il progetto di modello MVC5 standard che utilizza chiavi primarie di stringa.
      • Le modifiche necessarie per fornire multi-tenancy sono state isolate per questo commit .
    2. Intero Chiave primaria Implementazione che sta effettuando alcune personalizzazioni in più per utilizzare le chiavi primarie intere
      • Le modifiche necessarie per fornire multi-tenancy sono state isolate per questo commit .

    Ho intenzione di aggiornare la soluzione quando verrà rilasciata la versione 1.1 di ASP.NET Identity.

    Spero che gli altri trovino un uso nel pacchetto di nuget che ho rilasciato, qualsiasi feedback è più che benvenuto e, per favore, sollevate qualsiasi problema che trovate .


    Aggiornare

    La soluzione è stata aggiornata per utilizzare la versione 2.0 di Microsoft.AspNet.Identity.EntityFramework .

    Sì, abbiamo esplicitamente lasciato questo come uno scenario di estensibilità. Dovresti riuscire a farlo ignorando le proprietà di UserManager e implementando il tuo IUserStore personalizzato. Sebbene sia ansible estendere potenzialmente lo UserStore EF, aggiungere semplicemente un TenantId al proprio utente.