ASP.NET sito web Membership
-
21-09-2019 - |
Domanda
Stiamo colpendo un buon numero di muri e pietre d'inciampo, come noi creiamo la nostra appartenenza personalizzato basato su MembershipProvider, MembershipUser e RoleProvider ecc.
Abbiamo un certo numero di requisiti interessanti e provider di appartenenze non sembra essere aiutarci molto in loro raggiungimento:
- Gli utenti possono avere più account di accesso.
- Gli utenti non hanno un nome utente direttamente (ma possono avere un accesso che ha un nome utente).
- Gli utenti hanno un riferimento univoco (attualmente una chiave primaria incremento automatico).
Per implementare questo, abbiamo due tabelle: gli utenti che ha un uno-molti con account di accesso
.Questo significa che abbiamo un Utente che (in un mondo ipotetico) possono accedere tramite il loro account Active Directory automaticamente (quando possibile) e tramite un OpenID o una combinazione nome utente / password in alternativa. Avremo anche alcuni utenti che non possono avere un account AD.
Inizialmente avevo provato ri-proposizione delle classi di appartenenza con la creazione di: - CustomMembershipProvider - CustomMembershipUser - CustomRolesProvider
Ma tutta la mia lotta contro di esso mi ha appena dato occhi neri e lividi, in realtà, davvero vuole un nome utente!
ho io andato su questo nel modo migliore? Dovrei essere iniziando da stratch e non eredita nulla? Dovrei essere basandosi sulla classe IProvider? O forse le classi GenericPrincipal e GenericIdentity? O sono semplicemente perdendo qualcosa con MembershipProvider?
Voglio mantenere l'esperienza di programmazione fine così facile come lo è per la roba appartenenza out-of-the-box, per es.
Membership.GetCurrentUser();
Ed evitare un meno esperienza end-coder semplicistica ...
Soluzione
Ho avuto un'esperienza simile e ha deciso di dare a tutti gli utenti una comune appartenenza per il controllo di ruolo, ecc e la mappa per AuthenticationProviders differenct (provider OpenID, AD, l'appartenenza, ecc) in modo che possano essere autenticati in modo diverso.