Desidero utilizzare System.Guid tipo come ID per tutte le mie tabelle in asp.net web api application. Ma uso anche Asp.net Identity, che usa una stringa (per memorizzare anche i guids). Quindi mi chiedo perché sta usando stringa invece di System.Guid per impostazione predefinita? E qual è la scelta migliore da utilizzare attraverso tutta l'applicazione - Guid id o stringa -guid id? In caso di utilizzo di stringhe - qual è il modo più corretto e affidabile per generare un nuovo codice id o nel database?Perché l'ID utente identità di asp.net è una stringa?
risposta
A seconda della versione dell'autenticazione ASP.Net che si sta utilizzando, nel database ASP.NET Identity v2 deve essere memorizzata come identificatore univoco (Guid) nella tabella AspNetUsers
. Nelle versioni precedenti memorizzerà l'id utente come int nella tabella webpages_Membership
.
Credo che lo sollevi come una stringa in modo che possa essere qualsiasi tipo di dati che ti piace sotto il cofano e questo può quindi essere lanciato nel codice come richiesto.
Ciao Tim, sto usando l'ultima versione del sistema di appartenenza per ASP.NET - Identità ASP.NET. Non sono ancora sicuro, qual è la procedura migliore per utilizzare la stringa per tutte le tabelle nel mio database o convertire tutto in GUID? – Ostap
@ user3460585 int vs Guids sono argomenti antichissimi. Vedere queste risposte: http://dba.stackexchange.com/a/266/6868 http://blog.codinghorror.com/primary-keys-ids-versus-guids/ http://programmers.stackexchange.com/a/189031/86760 – trailmax
Scusa, non avevo capito che stavi chiedendo il tuo database. Generalmente ciò che facciamo è archiviare il nome utente su un record Utente nel nostro database, che possiamo quindi fare riferimento al record ASP.Net, che si stacca anche dal livello di appartenenza sottostante. – Tim
Con ASP.NET Core, si dispone di un modo molto semplice per specificare il tipo di dati desiderato per i modelli di Identity.
Primo passo, le classi di sostituzione di identità da < string> a dati < tipo che si desidera>:
public class ApplicationUser : IdentityUser<Guid>
{
}
public class ApplicationRole : IdentityRole<Guid>
{
}
dichiarare il vostro contesto del database, utilizzando le classi e il tipo di dati che si desidera:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, Guid>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
// Customize the ASP.NET Identity model and override the defaults if needed.
// For example, you can rename the ASP.NET Identity table names and more.
// Add your customizations after calling base.OnModelCreating(builder);
}
}
E nella classe di avvio, dichiarare il servizio di identità utilizzando i modelli e dichiarare il tipo di dati desiderato per il prim Tasti ary:
services.AddIdentity<ApplicationUser, ApplicationRole>()
.AddEntityFrameworkStores<ApplicationDbContext, Guid>()
.AddDefaultTokenProviders();
Per informazioni, c'è un argomento su questo nella documentazione ufficiale ora: https://docs.microsoft.com/en-us/aspnet/core/security/authentication/identity-primary-key-configuration – AdrienTorris
- 1. Asp.Net Identità salvare utente senza email
- 2. Identità ASP.NET
- 3. Asp.net Identità Errore di convalida
- 4. Password cambio identità ASP.NET
- 5. Identità ASP.NET nell'architettura Microservice
- 6. ASP.NET MVC Identità implementazione predefinita
- 7. identità asp.net - SetPasswordHashAsync
- 8. Creazione utente Identità Asp.net nel metodo seme Db Initializer
- 9. Identità ASP.NET Password personalizzata Verifica con nome utente
- 10. Identità ASP.NET Estendere i metodi per accedere alle proprietà utente
- 11. Diritti di implementazione con identità ASP.NET
- 12. Autenticazione LDAP con identità Asp.NET
- 13. quale utente esegue il mio utente asp.net?
- 14. Powershell Set Lid Close Azione
- 15. Esiste un'interfaccia utente per gestire gli utenti/ruoli di identità ASP.NET compatibili con ASP.NET 5?
- 16. Identità ASP.NET e provider di appartenenze ASP.NET "Mashup"
- 17. Identità identità ASP.NET quando il progetto viene creato senza autenticazione
- 18. Usa Nome utente invece di Email per identità in Asp.net mvc5
- 19. ASP.net MVC + ASP.net Identità Semina ruoli e utenti
- 20. email Identità con il precipitare in Asp.Net Identità
- 21. Perché AppDomainSetup.ShadowCopyFiles è una stringa?
- 22. Asp.net identità mvc SecurityStamp signout ovunque
- 23. Inizializzazione di RoleManager in identità ASP.NET con ruoli personalizzati
- 24. Verifica token di accesso - Identità Asp.Net
- 25. eccezione dopo l'aggiornamento ASP.NET Identità a 2,0
- 26. molteplici reclami associati a base di provider di identità di un utente con ASP.NET
- 27. Identità ASP.NET + token bearer + multi-tenant
- 28. ASP.net è utente nel ruolo
- 29. asp.net web.config impersonificazione o identità del pool di applicazioni
- 30. Identità principale ASP.NET - Estensione password Hasher
Il "perché" è spiegato [qui] (http://stackoverflow.com/q/19238621/304683) - entrambe le risposte a quel post sarà davvero aiutare. Hth. – EdSF
Grazie a @EdSF, ma ho ancora una domanda aperta su quale sia il modo migliore per organizzare l'applicazione - guid stringhe o Guids (uniqueidentifier) per l'id? – Ostap
Dipende dai tuoi requisiti. Vedere la [risposta di Rick Anderson (MSFT)] (http://stackoverflow.com/a/24152085/304683) per l'orientamento. – EdSF