আপনার বিদ্যমান প্রকল্পে পরিচয় কনফিগার করা কঠিন জিনিস নয়। আপনাকে অবশ্যই কিছু নুগেট প্যাকেজ ইনস্টল করতে হবে এবং কিছু ছোট কনফিগারেশন করতে হবে।
প্যাকেজ ম্যানেজার কনসোল দিয়ে প্রথমে এই নিউগেট প্যাকেজগুলি ইনস্টল করুন:
PM> Install-Package Microsoft.AspNet.Identity.Owin
PM> Install-Package Microsoft.AspNet.Identity.EntityFramework
PM> Install-Package Microsoft.Owin.Host.SystemWeb
একটি ব্যবহারকারী শ্রেণি এবং IdentityUser
উত্তরাধিকার সহ যুক্ত করুন:
public class AppUser : IdentityUser
{
//add your custom properties which have not included in IdentityUser before
public string MyExtraProperty { get; set; }
}
ভূমিকার জন্য একই কাজ করুন:
public class AppRole : IdentityRole
{
public AppRole() : base() { }
public AppRole(string name) : base(name) { }
// extra properties here
}
এটি পছন্দ করতে আপনার DbContext
পিতামাতাকে পরিবর্তন করুন :DbContext
IdentityDbContext<AppUser>
public class MyDbContext : IdentityDbContext<AppUser>
{
// Other part of codes still same
// You don't need to add AppUser and AppRole
// since automatically added by inheriting form IdentityDbContext<AppUser>
}
আপনি যদি একই সংযোগের স্ট্রিং এবং সক্ষম মাইগ্রেশন ব্যবহার করেন তবে EF আপনার জন্য প্রয়োজনীয় সারণী তৈরি করবে।
Allyচ্ছিকভাবে, আপনি UserManager
আপনার পছন্দসই কনফিগারেশন এবং কাস্টমাইজেশন যুক্ত করতে প্রসারিত করতে পারেন:
public class AppUserManager : UserManager<AppUser>
{
public AppUserManager(IUserStore<AppUser> store)
: base(store)
{
}
// this method is called by Owin therefore this is the best place to configure your User Manager
public static AppUserManager Create(
IdentityFactoryOptions<AppUserManager> options, IOwinContext context)
{
var manager = new AppUserManager(
new UserStore<AppUser>(context.Get<MyDbContext>()));
// optionally configure your manager
// ...
return manager;
}
}
যেহেতু পরিচয় OWIN এর উপর ভিত্তি করে আপনার OWIN কেও কনফিগার করতে হবে:
App_Start
ফোল্ডারে (অথবা আপনি চাইলে অন্য কোথাও) একটি শ্রেণি যুক্ত করুন । এই ক্লাসটি ওউআইএন ব্যবহার করে। এটি আপনার স্টার্টআপ ক্লাস হবে।
namespace MyAppNamespace
{
public class IdentityConfig
{
public void Configuration(IAppBuilder app)
{
app.CreatePerOwinContext(() => new MyDbContext());
app.CreatePerOwinContext<AppUserManager>(AppUserManager.Create);
app.CreatePerOwinContext<RoleManager<AppRole>>((options, context) =>
new RoleManager<AppRole>(
new RoleStore<AppRole>(context.Get<MyDbContext>())));
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Home/Login"),
});
}
}
}
প্রায় শেষ হয়ে গেলে আপনার web.config
ফাইলটিতে কোডের এই লাইনটি যুক্ত করুন যাতে OWIN আপনার প্রারম্ভিক শ্রেণীর সন্ধান করতে পারে।
<appSettings>
<!-- other setting here -->
<add key="owin:AppStartup" value="MyAppNamespace.IdentityConfig" />
</appSettings>
এখন পুরো প্রকল্পে আপনি পরিচয় ব্যবহার করতে পারবেন ঠিক তেমন কোনও নতুন প্রকল্প ইতিমধ্যে ভিএস দ্বারা ইনস্টল করা হয়েছিল উদাহরণস্বরূপ লগইন ক্রিয়া বিবেচনা করুন
[HttpPost]
public ActionResult Login(LoginViewModel login)
{
if (ModelState.IsValid)
{
var userManager = HttpContext.GetOwinContext().GetUserManager<AppUserManager>();
var authManager = HttpContext.GetOwinContext().Authentication;
AppUser user = userManager.Find(login.UserName, login.Password);
if (user != null)
{
var ident = userManager.CreateIdentity(user,
DefaultAuthenticationTypes.ApplicationCookie);
//use the instance that has been created.
authManager.SignIn(
new AuthenticationProperties { IsPersistent = false }, ident);
return Redirect(login.ReturnUrl ?? Url.Action("Index", "Home"));
}
}
ModelState.AddModelError("", "Invalid username or password");
return View(login);
}
আপনি ভূমিকা নিতে এবং আপনার ব্যবহারকারীদের যোগ করতে পারে:
public ActionResult CreateRole(string roleName)
{
var roleManager=HttpContext.GetOwinContext().GetUserManager<RoleManager<AppRole>>();
if (!roleManager.RoleExists(roleName))
roleManager.Create(new AppRole(roleName));
// rest of code
}
আপনি এইভাবে কোনও ব্যবহারকারীর ভূমিকাও যোগ করতে পারেন:
UserManager.AddToRole(UserManager.FindByName("username").Id, "roleName");
ব্যবহার করে Authorize
আপনি আপনার ক্রিয়াকলাপ বা নিয়ন্ত্রণকারীদের রক্ষা করতে পারেন:
[Authorize]
public ActionResult MySecretAction() {}
অথবা
[Authorize(Roles = "Admin")]]
public ActionResult MySecretAction() {}
আপনি অতিরিক্ত প্যাকেজগুলি ইনস্টল করতে পারেন এবং আপনার প্রয়োজন মতো Microsoft.Owin.Security.Facebook
বা আপনি যা চান তা পূরণের জন্য সেগুলি কনফিগার করতে পারেন।
দ্রষ্টব্য: আপনার ফাইলগুলিতে প্রাসঙ্গিক নেমস্পেস যুক্ত করতে ভুলবেন না:
using Microsoft.AspNet.Identity;
using Microsoft.Owin.Security;
using Microsoft.AspNet.Identity.Owin;
using Microsoft.AspNet.Identity.EntityFramework;
using Microsoft.Owin;
using Microsoft.Owin.Security.Cookies;
using Owin;
আপনি পছন্দ করতে আমার অন্যান্য উত্তর দেখতে পারে এই এবং এই পরিচয় উন্নত ব্যবহারের জন্য।