... ... IdentityConfig.cs klass faylini App_start papkasiga quyidagi tarkib bilan qo‘shing:
using Microsoft.AspNet.Identity;
using Microsoft.Owin;
using Microsoft.Owin.Security.Cookies;
using Owin;
using Users.Infrastructure;
namespace Users
{
public class IdentityConfig
{
public void Configuration(IAppBuilder app)
{
app.CreatePerOwinContext(AppIdentityDbContext.Create);
app.CreatePerOwinContext(AppUserManager.Create);
UseCookieAuthentication metodi Identity tizimiga foydalanuvchilarni avtorizatsiya qilish uchun cookie-dan foydalanishni ko‘rsatadi, parametrlar CookieAuthenticationOptions obyekti orqali uzatiladi. Bu yerda eng muhim sozlash – bu autentifikatsiya qilinmagan foydalanuvchi avtorizatsiyani talab qiladigan resursga murojaat qilganda yo‘naltiriladigan URL manzilini ko‘rsatadigan LoginPath xossasini sozlash.
Foydalanuvchilar ro‘yxati. Quyidagi misolda ko‘rsatilgan loyihaga Admin Controller-ini qo‘shing. Kelgusida ushbu Controller-da foydalanuvchilarni boshqarishning barcha funksiyalarini aniqlaymiz.
using System.Web;
using System.Web.Mvc;
using Users.Infrastructure;
using Microsoft.AspNet.Identity.Owin;
namespace Users.Controllers
{
public class AdminController : Controller
{
public ActionResult Index()
{
return View(UserManager.Users);
}
private AppUserManager UserManager
{
get
{
return HttpContext.GetOwinContext().GetUserManager();
}
}
}
}
“Index” metodida foydalanuvchilar ro‘yxati View-da ishlatilish uchun Users xossaining qiymatini View() metodiga uzatamiz. Quyidagi misolda Views/Admin/Index.cshtml View faylining tarkibini ko‘rsatadi. Controller metodi nomining ustida sichqonchaning o‘ng tugmachasini bosib, kontekst menyusidan View-ni qo‘shish mumkin.
@using Users.Models
@model IEnumerable
@{
ViewBag.Title = "ASP.NET Identity";
}
Foydalanuvchilar
Id
Login
Email
@if (Model.Count() == 0)
{
Bironta ham foydalanuvchi yo’q.
}
else
{
foreach (AppUser user in Model)
{
@user.Id
@user.UserName
@user.Email
}
}
@Html.ActionLink("Yaratish", "Create", null, new { @class = "btn btn-primary" })
Parollarni tekshirish. Eng keng tarqalgan talablardan biri, bu ayniqsa korporativ dasturlarini ishlab chiqishda, foydalanuvchilar parollarining murakkabligini nazorat qilishdir. ASP.NET Identity parolning murakkabligini tekshirishni ta’minlash uchun quyidagi jadvalda keltirilgan xossalardan foydalangan holda sozlash imkoni beradigan PasswordValidator klassini taqdim etadi.
Nomi
Tavsif
RequiredLength
Parolning minimal uzunligi
RequireNonLetterOrDigit
Agar true bo‘lsa, harf va raqamlardan tashqari kamida bitta simvol talab qilinadi
RequireDigit
Agar true bo‘lsa, kamida bitta raqam talab qilinadi
RequireLowercase
Agar true bo‘lsa, kamida bitta kichik harf talab qilinadi
RequireUppercase
Agar true bo‘lsa, kamida bitta katt harf talab qilinadi
PasswordValidator-ni sozlash:
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;
using Microsoft.AspNet.Identity.Owin;
using Microsoft.Owin;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Users.Models;
namespace Users.Infrastructure
{
public class AppUserManager : UserManager {
public AppUserManager(IUserStore store)
: base(store)
{ }
public static AppUserManager Create(IdentityFactoryOptions options,
IOwinContext context)
{
AppIdentityDbContext db = context.Get();
AppUserManager manager = new AppUserManager(new UserStore(db));
ASP.NET MVC foydalanuvchilarning ruxsatsiz kirishini cheklash uchun kontroller va metodlarga nisbatan qo‘llaniladigan avtorizatsiya atributidan foydalaniladi:
using System.Collections.Generic;
using System.Web.Mvc;
namespace Users.Controllers
{
public class HomeController : Controller
{
[Authorize]
public ActionResult Index()
{
Dictionary data = new Dictionary();
data.Add("kalit", "qiymat");
return View(data);
}
}
}
ASP.NET foydalanuvchi so‘rovining holatini tekshirish va foydalanuvchi haqiqiyligini tekshirish uchun HttpContext obyektida foydalanuvchi haqida kerakli ma’lumotlarni beradi. HttpContext.User xossasi System.Security.Principal nomlar maydonida aniqlangan IPrincipal interfeysning tatbiqini qaytaradi. IPrincipal interfeysi quyidagi jadvalda keltirilgan xossalar va metodlarga ega:
Nomi
Tavsifi
Identity
IIdentity interfeysi tatbiqini qaytaradi, unda so‘rovni amalga oshirgan foydalanuvchi haqida ma’lumot bo‘ladi
IsInRole(role)
Foydalanuvchi ko‘rsatilgan rolga ega ekanligi aniqlash