ASP.Net实现用户权限管理
二、 Membership Service介绍
Membership公开了大部分的Membership Service API, 允许执行各种任务:创建 /更新/ 删除/找回 Membership用户。
Membership类中的所有方法都是接受 /返回一个或者一组MembershipUser的实例
三、 RoleProvider介绍
RoleProvider提供了基于数据存储的角色管理, 可以从数据源保存或者读取角色信息。
Roles类有多个静态方法, 比如 IsUserInRole,AddUsersToRole 等等,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)方法,在方法中调用权限管理的接口。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。