ASP.Net實現使用者許可權管理

muzizongheng發表於2013-07-10
<?xml version="1.0" encoding="UTF-8"?>
一、 ASP.Net提供對於許可權安全提供的技術
Authentication(驗證)         MembershipProvider (用儲存的資訊驗證使用者是
Authorization(授權)            RoleProvider (實現使用者和角色的對映,允許使用者 可以做什麼

二、 Membership Service介紹

Membership公開了大部分的Membership Service API 允許執行各種任務:
建立 /更新/ 刪除/找回 Membership使用者。
MembershipUser 是已存在的membership 使用者的一個執行時表現。允許:
更改 /重置密碼

Membership類中的所有方法都是接受 /返回一個或者一組MembershipUser的例項

三、 RoleProvider介紹

RoleProvider提供了基於資料儲存的角色管理, 可以從資料來源儲存或者讀取角色資訊。
四、場景應用
MemberShip類有多個靜態方法, 比如 ValidateUserCreateUser 等等, Asp.Net內部呼叫相關方法實現使用者管理。

Roles類有多個靜態方法, 比如 IsUserInRoleAddUsersToRole 等等,Asp.Net內部呼叫相關方法實現角色管理。


五、VS工程配置
1. 新增User和Role的配置
web.config裡新增使用Provider的節點。其中CustomMembershipProvider和CustomRoleProvider是我們實現上面介面的類。


   <roleManager enabled="true" defaultProvider="CustomRoleProvider">
      <providers>
        <clear />
        <add name="CustomRoleProvider" type="UIH.PACS.AuthorizationUtility.CustomRoleProvider" applicationName="/" />
      </providers>
    </roleManager>


2.新增Form驗證
    <authentication mode="Forms">      <forms loginUrl="~/Account/LogOn" defaultUrl="~/PatientAdmin/Index" timeout="2880" />    </authentication>
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("//") && !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屬性, 過載bool AuthorizeCore(HttpContextBase httpContext)方法,在方法中呼叫許可權管理的介面。

相關文章