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 ...

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top