2014-09-25 12 views
6

Ho una serie di classi che ho sovrascritto per l'utilizzo in ASP.NET Identity 2.0 in modo che utilizzino il campo dell'indirizzo e-mail anziché il campo dell'email.Rimuovere il costrutto univoco e rendere il nome utente nullable nell'identità ASP.NET

Quando si tenta di creare un utente che dice The UserName field is required. ho provato sovrascrivendo il campo Nome utente nella mia classe che eredita da ApplicationUserIdentityUser con [Index(IsUnique = false)] tuttavia questo solo si traduce in un vincolo univoco e un indice non univoco in fase di creazione.

Come è possibile eseguire l'override della classe IdentityUser per rendere il nome utente nullable e non univoco in quanto non si desidera utilizzarlo.

Nota: Sono pienamente consapevole del fatto che è possibile memorizzare l'e-mail nel campo nome utente utilizzando la proprietà AllowOnlyAlphanumericUserNames nella classe UserValidator. Non mi piace davvero questo approccio e vorrei solo rimuovere questo vincolo in modo da poter memorizzare il record senza un nome utente. Modificherò tutte le funzioni di cui ho bisogno che usano il nome utente per controllare l'indirizzo email.

+0

In base all'attuale implementazione di Identity Framework, non è possibile utilizzare i metodi esistenti già pronti per le esigenze. Ti suggerirei di usare la sezione Username come Email e impostare AllowOnlyAlphanumericUserNames = true. – DSR

risposta

0

L'unico vero modo per liberarsene è implementare il proprio IUserStore. Che suona come un sacco di lavoro per quasi nessun guadagno pratico.

Vedere UserManager ha il metodo FindByNameAsync() e IUserStore<TUser, in TKey> anche il metodo Task<TUser> FindByNameAsync(string userName) deve essere presente nella classe di implementazione.

Inoltre, è necessario creare la propria implementazione di IdentityDbContext oppure creare tabelle/relazioni richieste nel proprio ApplicationDbContext per rimuovere la convalida di unicità. Anche questo è un altro carico di lavoro.

Non ne vale la pena.

1

Ecco la piena implementazione di IUserStore - http://git.io/XZ3psA Non direi che c'è molto lavoro.