2015-07-17 15 views
7

Bir MVC5 uygulamada basit rol tabanlı kimlik doğrulaması + yetkilendirme uygulamaya çalışıyorum, ama ben birkaç öğreticiler ve kılavuzları okuyorumIIdentity, IPrincipal veya IUser: fark nedir?

Kimlik çerçevesinde yer alan bütün parçaları anlamaya çalışan bazı baş ağrısı alıyorum ama Açık bir fikrim yok.

Özellikle: IIdentity, IPrincipal veya IUser arabirimleri arasındaki fark nedir? Hangisini uygulamalıyım?

+0

'IIdentity', kullanıcının ilk bilgilerine karşı, 'IPrincipal' kullanıcının rol bilgisine karşı (RBAC), 'IKullanıcı' özür dilerim? Hakkında hiçbir fikrim yok –

+0

'IUser', AspNet.Identity'nin bir parçasıdır. 'UserManager' veya' SignInManager' gibi Identity nesnelerle çalışmayı umuyorsanız buna ihtiyacınız var. – Shoe

cevap

5

'IPrincipal' bir .Net framework's interface olup:

public interface IPrincipal { 
    // Retrieve the identity object 
    IIdentity Identity { get; } 

    // Perform a check for a specific role 
    bool IsInRole (string role); 
} 

Bu arayüz kullanıcı oturum temel işlevlerini tanımlar. Bu arabirimi uygulayan nesne, kodunuzun çalıştığı güvenlik bağlamını temsil eder. Sen .NET IPrincipal farklı tatlar elde edebilirsiniz: ClaimsPrincipal, WindowsPrincipal ve diğerleri - tüm kullandığınız framework bağlıdır. Asp.Net Identity framework ile çalışıyorsanız, ClaimsPrincipal ile ilgileniyor olacaksınız. Genellikle bu arayüzü uygulama gereği duymazsınız.

IIdentity, kullanıcının izinlerini temsil eder. Asp.Net Kimlik çerçevesi için ClaimsIdentity ile ilgileniyor olacaksınız. Yine bu, uygulamanız gerekmeyen bir şey.

Here is more documentationIPrincipal ve IIDentity hakkında.

IUser, Asp.Net Identity framework'ün bir parçasıdır. Eğer Kimlik varlık Framework bölümünü kullanıyorsanız, you'll be provided withIdentityUser sınıfı miras ve yayılabilir. Bu sizin uygulamak için bir model.

Temel olarak IdentityUser bir veritabanında saklanan bir POCO'dur. kullanıcı giriş yaptığında Ve IdentityUser gelen bilgiler çerçevesi tarafından ClaimsPrincipal ve ClaimsIdentity dönüştürülecektir. Ve HttpContext.Current.User'a eriştiğinizde size ClaimsPrincipal verilir.

Umut bu sizin için bir şeyler temizler.