हाँ तुम कर सकते हो। प्रमाणीकरण और प्राधिकरण भागों स्वतंत्र रूप से काम करते हैं। यदि आपकी अपनी प्रमाणीकरण सेवा है तो आप OWIN के प्राधिकरण भाग का उपयोग कर सकते हैं। पर विचार करें आप पहले से ही एक है UserManager
जो पुष्टि username
और password
। इसलिए आप अपनी पोस्ट बैक लॉगइन एक्शन में निम्न कोड लिख सकते हैं:
[HttpPost]
public ActionResult Login(string username, string password)
{
if (new UserManager().IsValid(username, password))
{
var ident = new ClaimsIdentity(
new[] {
new Claim(ClaimTypes.NameIdentifier, username),
new Claim("http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider", "ASP.NET Identity", "http://www.w3.org/2001/XMLSchema#string"),
new Claim(ClaimTypes.Name,username),
new Claim(ClaimTypes.Role, "RoleName"),
new Claim(ClaimTypes.Role, "AnotherRole"),
},
DefaultAuthenticationTypes.ApplicationCookie);
HttpContext.GetOwinContext().Authentication.SignIn(
new AuthenticationProperties { IsPersistent = false }, ident);
return RedirectToAction("MyAction");
}
ModelState.AddModelError("", "invalid username or password");
return View();
}
और आपका उपयोगकर्ता प्रबंधक कुछ इस तरह से हो सकता है:
class UserManager
{
public bool IsValid(string username, string password)
{
using(var db=new MyDbContext())
{
return db.Users.Any(u=>u.Username==username
&& u.Password==password);
}
}
}
अंत में, आप एक Authorize
विशेषता जोड़कर अपने कार्यों या नियंत्रकों की रक्षा कर सकते हैं ।
[Authorize]
public ActionResult MySecretAction()
{
}
[Authorize(Roles="Admin")]
public ActionResult MySecretAction()
{
}