asp.net mvc 控制器&动作方法 角色 权限验证
来源:互联网 发布:网络稳定软件 编辑:程序博客网 时间:2024/05/21 10:37
环境:
Visual Studio Community 2015
Asp.net MVC5
第一步:
检查项目根目录的 Web.config 中的 system.web 节点中是否有下面这个节点,没有请添加
其中 loginUrl=”~/Account/Login” 表示当前用户无权访问动作方法或控制器时,自动被系统重定向到
Account控制器的 Login方法
<authentication mode="Forms"> <forms loginUrl="~/Account/Login" timeout="2800" /> </authentication>
第二步:
在项目根目录的 Global.asax 里添加下面代码:
其中包含 MvcApplication 构造方法
这些代码用于在系统验证控制器或动作方法访问权限时,进行一个额外的角色验证
public MvcApplication() { AuthorizeRequest += new EventHandler(ApplicationAuthenticateRequest); } protected void ApplicationAuthenticateRequest(Object sender, EventArgs e) { HttpCookie authCookie = Context.Request.Cookies[FormsAuthentication.FormsCookieName]; if (authCookie == null || authCookie.Value == "") { return; } FormsAuthenticationTicket authTicket = null; try { authTicket = FormsAuthentication.Decrypt(authCookie.Value); } catch { return; } string[] roles = authTicket.UserData.Split(new char[] { ',' }); if (Context.User != null) { Context.User = new System.Security.Principal.GenericPrincipal(Context.User.Identity, roles); } }
第三步:
登陆通过后,调用下面的方法,把角色写入cookie
其中第一个参数 userName 指可以唯一标识当前登陆用户的Id值
第二个参数roleName指当前用户的角色,例如可以是admin(管理员)
private void SetAuthCookie(string userName, string roleName) { FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, userName, DateTime.Now, DateTime.Now.AddMinutes(10), false, roleName); string encryptTicket = FormsAuthentication.Encrypt(ticket); System.Web.HttpCookie authCookie = new System.Web.HttpCookie(FormsAuthentication.FormsCookieName, encryptTicket); System.Web.HttpContext.Current.Response.Cookies.Add(authCookie); }
第四步:
在动作方法或控制器上方加上以下特性
这种验证能实现,得益于第二步
//表示只有角色为 admin 的用户才能访问 [Authorize(Roles = "admin")]
或
//表示角色为 admin 或 normal 的用户能访问 [Authorize(Roles = "admin,normal")]
0 0
- asp.net mvc 控制器&动作方法 角色 权限验证
- Asp.Net MVC(控制器、控制器动作和动作结果
- Asp.net mvc 动作方法中 调用 另一个控制器的动作方法
- ASP.NET Form验证和角色权限
- Asp.net MVC中的全局权限验证方法及实现
- 初识ASP.NET MVC窗体验证与权限过滤---2.基于角色的访问控制
- Asp.Net MVC(控制器、控制器动作和动作结果) - Part.3
- Asp.Net MVC(控制器、控制器动作和动作结果) - Part.3
- Asp.net MVC 4 动作方法结果
- ASP.NET MVC:窗体身份验证及角色权限管理示例
- ASP.NET MVC:窗体身份验证及角色权限管理示例
- ASP.NET MVC 窗体身份验证及角色权限管理示例
- ASP.NET MVC:窗体身份验证及角色权限管理示例
- ASP.NET MVC:窗体身份验证及角色权限管理示例
- ASP.NET MVC:窗体身份验证及角色权限管理示例 .
- ASP.NET MVC:窗体身份验证及角色权限管理示例
- ASP.NET MVC:窗体身份验证及角色权限管理示例
- ASP.net MVC 基于角色的权限控制系统的实现
- RTRIM(c1,[,c2])
- 当前心血管疾病大数据研究的挑战
- RPAD(c1,n[,c2])
- CSS选择器解释大全图解 && Javascript运算符优先级
- NLS_UPPER(x[,y])
- asp.net mvc 控制器&动作方法 角色 权限验证
- Struts2框架8.拦截器介绍
- UVa 10652 Board Wrapping
- 智慧北京项目总结
- (电工基地笔记)Vivado出现编译错误,无法生成bit文件
- NLS_INITCAP(x[,y])
- collection详解
- LeetCode | Jump Game
- 设计模式(Javaee)之---监听者模式