2015-07-17 11 views
7

sto cercando di implementare l'autenticazione semplice ruolo di base + autorizzazione in un'applicazione MVC5, ma mi sto un po 'di mal di testa cercando di capire tutte le parti coinvolte nel quadro IdentitàIIdentity, IPrincipal o IUser: qual è la differenza?

sto leggendo diversi tutorial e guide, ma Non ho un'idea chiara.

In particolare: qual è la differenza tra le interfacce IIdentity, IPrincipal o IUser? Quale di loro dovrei implementare?

+0

'IIdentity' contro le informazioni prim dell'utente,' IPrincipal' contro le informazioni sul ruolo dell'utente (RBAC), 'IUser' sorry? Non ne ho idea al riguardo. –

+0

'IUser' fa parte di AspNet.Identity. Ne hai bisogno se ti aspetti di lavorare con oggetti Identity come 'UserManager' o' SignInManager' – Shoe

risposta

5

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

Problemi correlati