一、 ASP.Net提供對于權(quán)限安全提供的技術(shù)
Authentication(驗(yàn)證) MembershipProvider (用保存的信息驗(yàn)證用戶是 誰)
Authorization(授權(quán)) RoleProvider (實(shí)現(xiàn)用戶和角色的映射,允許用戶 可以做什么 )
二、 Membership Service介紹
Membership公開了大部分的Membership Service API, 允許執(zhí)行各種任務(wù):
創(chuàng)建 /更新/ 刪除/找回 Membership用戶。
MembershipUser 是已存在的membership 用戶的一個(gè)運(yùn)行時(shí)表現(xiàn)。允許:
更改 /重置密碼
Membership類中的所有方法都是接受 /返回一個(gè)或者一組MembershipUser的實(shí)例
三、 RoleProvider介紹
RoleProvider提供了基于數(shù)據(jù)存儲(chǔ)的角色管理, 可以從數(shù)據(jù)源保存或者讀取角色信息。
四、場景應(yīng)用
MemberShip類有多個(gè)靜態(tài)方法, 比如 ValidateUser,CreateUser 等等, Asp.Net內(nèi)部調(diào)用相關(guān)方法實(shí)現(xiàn)用戶管理。
Roles類有多個(gè)靜態(tài)方法, 比如 IsUserInRole,AddUsersToRole 等等,Asp.Net內(nèi)部調(diào)用相關(guān)方法實(shí)現(xiàn)角色管理。
五、VS工程配置
1. 添加User和Role的配置
web.config里添加使用Provider的節(jié)點(diǎn)。其中CustomMembershipProvider和CustomRoleProvider是我們實(shí)現(xiàn)上面接口的類。
2.添加Form驗(yàn)證
3.LogOn方法中的使用
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl) { if (ModelState.IsValid) { if (Membership.ValidateUser(model.UserName, model.Password)) { FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe); if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/") && !returnUrl.StartsWith("http://") && !returnUrl.StartsWith("/\\")) { return Redirect(returnUrl); } else { FormsAuthentication.RedirectFromLoginPage(model.UserName, false); //return RedirectToAction("Index", "PatientAdmin"); } } else { ModelState.AddModelError("", "The user name or password provided is incorrect."); } } // If we got this far, something failed, redisplay form return View(model); }
4.繼承AuthorizeAttribute屬性, 重載boolAuthorizeCore(HttpContextBasehttpContext)方法,在方法中調(diào)用權(quán)限管理的接口。