16-mavzu: Veb avtorizatsiya, rollarga asoslangan xavfsizlik
Reja:
Avtorizatsiya nima?
Rollardan foydalanishni sozlash
Rollarni yaratish va o‘chirish
Rollarni tahrirlash
Rollarni avtorizatsiya qilish uchun qo‘llash
Avtorizatsiya nima?
Avtorizatsiya – bu, ASP.NET MVC da odatda, muayyan rollarda bo‘lgan muayyan foydalanuvchilarga Controller-lar va metodlarga ruxsat berish jarayoni (masalan, administrator faqat boshqaruv paneliga kirish huquqiga ega bo‘lishi kerak).
Avtorizatsiyasiz faqat foydalanuvchilarning ikkita toifasini farqlash mumkin: autentifikatsiya qilingan va qilinmagan. Ko‘pgina dasturlarda bir nechta rollar mavjud: foydalanuvchi, moderator, administrator va boshqalar.
Rollar Controller va metodlarning Authorize atributi orqali avtorizatsiyani amalga oshirish uchun ishlatiladi.
Rollardan foydalanishni sozlash
ASP.NET Identity RoleManager deb nomlangan rollarga faydalanish va boshqarish uchun bazaviy klassni taqdim etadi, bu yerda T rollarni ifodalash uchun ishlatiladigan ma’lumotlarni saqlash mexanizmini tavsiflovchi IRole interfeysining tatbiqi. Entity Framework IRole interfeysining realizasiya bo‘lgan IdentityRole klassidan foydalanadi, u quyidagi xossalarga ega:
Nomi
|
Tavsifi
|
Id
|
Rol takrorlanmas identifikatori
|
Name
|
Nomi
|
Users
|
Ushbu rolga ega bo‘lgan foydalanuvchilar
|
AppRole.cs klass faylini “Models” papkasiga quyidagi tarkib bilan qo‘shing:
using Microsoft.AspNet.Identity.EntityFramework;
namespace Users.Models
{
public class AppRole : IdentityRole
{
public AppRole() : base() { }
public AppRole(string name)
: base(name)
{ }
}
}
RoleManager klassi IRole obyektlari bilan quyidagi jadvalda keltirilgan metod va xossalardan foydalangan holda ishlaydi.
Nomi
|
Tavsifi
|
CreateAsync(role)
|
Yangi rolni yaratish
|
DeleteAsync(role)
|
Mavjud rolni o‘chirish
|
FindByIdAsync(id)
|
Rolning Id qiymati bo‘yicha qidirish
|
FindByNameAsync(name)
|
Rolning nomi bo‘yicha qidirish
|
RoleExistsAsync(name)
|
agar ko‘rsatilgan nomdagi rol mavjud bo‘lsa “True” qiymat aks holda “False” qiymat qaytaradi,
|
UpdateAsync(role)
|
Roldagi o‘zgarishlarni saqlash
|
Roles
|
Mavjud rollar ro‘yxati
|
AppRoleManager.cs faylini quyidagi tarkib bilan “Infrastructure” papkasiga qo‘shing:
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;
using Microsoft.AspNet.Identity.Owin;
using Microsoft.Owin;
using System;
using Users.Models;
namespace Users.Infrastructure
{
public class AppRoleManager : RoleManager, IDisposable
{
public AppRoleManager(RoleStore store)
: base(store)
{ }
public static AppRoleManager Create(
IdentityFactoryOptions options,
IOwinContext context)
{
return new AppRoleManager(new
RoleStore(context.Get()));
}
}
}
Rollarni boshqarish klassini OWIN-da ro‘yxatdan o‘tkazish uchun quyidagi misolda ko‘rsatilganidek IdentityConfig.cs faylini tahrirlash kerak:
//...
namespace Users
{
public class IdentityConfig
{
public void Configuration(IAppBuilder app)
{
//...
app.CreatePerOwinContext(AppRoleManager.Create);
//...
}
}
}
Do'stlaringiz bilan baham: |