Voglio che il mio User
di avere un Guid
come chiave primaria, ma quando creo il mio tipo di utente, il mio sito web genera un'eccezione all'avvio.
Qualcuno sa come cambiare il tipo di IdentityUser?
L'ho fatto:
services.AddIdentity<MyUser, MyRole>()
.AddEntityFrameworkStores<UBContext>()
.AddDefaultUI()
.AddDefaultTokenProviders();
Ma quando il mio programma si avvia ottengo questo errore:
InvalidOperationException: nessun servizio per tipo 'Microsoft.AspNetCore.Identity.UserManager`1 [Microsoft.AspNetCore.Identity.IdentityUser]' è stato registrato.
Questo ha qualcosa a che fare con il fatto che l'UI di identità è ora in una lib separata e un controller in quella lib sta aspettando un UserManager<IdentityUser>
?
Come posso ignorarlo?
Ok, quindi ho trovato il problema. _LoginPartial.cshtml inject
@inject SignInManager<IdentityUser>
@inject UserManager<IdentityUser>
quindi è necessario assicurarsi che siano aggiornati a
@inject SignInManager<MyUser>
@inject UserManager<MyUser>
È necessario estendere IdentityUser
dalla classe MyUser
:
public class MyUser : IdentityUser
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
Quindi registrando la nuova classe utente:
services.AddIdentity<MyUser , MyRole>()
E infine, dove viene iniettato il tuo UserManager
, aggiungi il tuo tipo:
public HomeController(UserManager<MyUser> userManager) { }