'IPrincipal' è un .Net framework's interface:
public interface IPrincipal {
// Retrieve the identity object
IIdentity Identity { get; }
// Perform a check for a specific role
bool IsInRole (string role);
}
Questa interfaccia definisce la funzionalità di base connesso. L'oggetto che implementa questa interfaccia rappresenta il contesto di sicurezza in cui è in esecuzione il codice. È possibile ottenere diversi sapori di IPrincipal
in .Net: ClaimsPrincipal
, WindowsPrincipal
e altri - tutto dipende dal framework che si sta utilizzando. Se stai lavorando con Asp.Net Identity Framework, avrai a che fare con ClaimsPrincipal
. Di solito non è necessario implementare questa interfaccia.
IIdentity
rappresenta le autorizzazioni dell'utente. Per Asp.Net Identity framework ti occuperai di ClaimsIdentity. Ancora una volta, questo è qualcosa che non è necessario implementare.
Here is more documentation sul IPrincipal
e IIDentity
.
IUser
fa parte di Asp.Net Identity framework. Se si utilizza Entity Framework parte di Identity, you'll be provided withIdentityUser
class che è possibile ereditare ed estendere. Questo è un modello da implementare.
Fondamentalmente IdentityUser
è un POCO che viene conservato in un database. E quando l'utente ha effettuato l'accesso, le informazioni da IdentityUser
verranno trasformate in ClaimsPrincipal
e ClaimsIdentity
dal framework. E quando accedi a HttpContext.Current.User
ti verrà dato ClaimsPrincipal
.
Spero che questo chiarisca le cose per voi.
'IIdentity' contro le informazioni prim dell'utente,' IPrincipal' contro le informazioni sul ruolo dell'utente (RBAC), 'IUser' sorry? Non ne ho idea al riguardo. –
'IUser' fa parte di AspNet.Identity. Ne hai bisogno se ti aspetti di lavorare con oggetti Identity come 'UserManager' o' SignInManager' – Shoe