ASP.Net实现用户权限管理

来源:互联网 发布:ucjiz软件免费下载 编辑:程序博客网 时间:2024/05/22 00:32
一、 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是我们实现上面接口的类。

  <membership defaultProvider="CustomMembershipProvider">      <providers>        <clear />        <add name="CustomMembershipProvider" type="UIH.PACS.AuthorizationUtility.CustomMembershipProvider" connectionStringName="uihrisdbEntities" enablePasswordRetrieval="true" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" description="Stores and retrieves membership data from the local Microsoft SQL Server database" />      </providers>    </membership>

   <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)方法,在方法中调用权限管理的接口。