ASP .Net Core Identity
دوستان سلام
در حال مطالعه Identity در .net Core هستم. متاسفانه سر قضیه Role و Claim گیج شدم و برام جا نمیفته !
ممکنه تفاوت این دو تا رو به زبون ساده توضیح بدید. ممنون
1 پاسخ
سلام، وقت بخیر
به صورت خیلی ساده اینطور میشه گفت که Claim ها شامل اطلاعاتی هستند که یک کاربر رو توصیف می کنند، برای مثال، شما بوسیله Claim ها می تونید نام، نام خانوادگی، آدرس ایمیل، دسترسی ها و حتی اطلاعات دلخواهی که بوسیله کاربر تعریف میشه. برای مثال، کد زیر اطلاعات کاربر از قبیل نام کاربری، آدرس ایمیل و Role ها رو اضافه می کنه:
var userClaims = new List<Claim>();
userClaims.Add(new Claim(ClaimTypes.Name, "Admin"));
userClaims.Add(new Claim(ClaimTypes.Email, "admin@website.com"));
userClaims.Add(new Claim(ClaimTypes.Role, "Content editor"));
userClaims.Add(new Claim("About", "Some words about user"));
var claimsIdentity = new ClaimsIdentity(userClaims , "MySchema");
var claimsPrincipal = new ClaimsPrincipal(claimsIdentity);
موضوع دیگه ای که هست شما بر اساس نام Claim و مقدار هم می تونید عملیات اعتبار سنجی رو انجام بدید، کد زیر یک Policy تعریف می کنه که کافیه کاربر Calim ای با نام ContentEditor رو داشته باشه:
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthorization(options =>
{
options.AddPolicy("Editor", policy => policy.RequireClaim("ContentEditor"));
});
}
شما می تونید Policy ای که تعریف می کنید بر اساس مقدار Claim باشه:
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthorization(options =>
{
options.AddPolicy("CommentPostEditor", policy => policy.RequireClaim("ContentEditor","Comment","Post"));
});
}
اما Role فقط یک سطح دسترسی هست، مثل گروهی که کاربرها بهش اضافه میشن، مثل Administrator، حالا هر کی به گروه Administrator اضافه شده باشه دسترسی به بخش های مورد نظر رو داره.