博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Asp.net MVC自定义权限
阅读量:6259 次
发布时间:2019-06-22

本文共 2277 字,大约阅读时间需要 7 分钟。

MVC框架的一个很重要的优势在于可拓展性很高。权限的管理在每一个Web应用程序中都非常重要,虽然微软提供了Membership的默认权限设置,但在更多的情况下,Membership默认的权限设置并不能满足我们实际的需要。

    下面本文将用一种简单的办法来自定义权限。

     在MVC框架中,属性常用来限定控制器(Controller)的访问。所以我们首先从AuthorizeAttribute类中继承一个自定义的权限类。

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.Mvc; 6  7 namespace MvcApplication_AuthorizeAttribute.Models 8 { 9     public class MyAuthAttribute : AuthorizeAttribute  10     {11         // 只需重载此方法,模拟自定义的角色授权机制  12         protected override bool AuthorizeCore(HttpContextBase httpContext)13         {14             if (!httpContext.User.Identity.IsAuthenticated)//判断用户是否通过验证15                 return false;16             string[] StrRoles = Roles.Split(',');//通过逗号来分割允许进入的用户角色17             if (string.IsNullOrWhiteSpace(Roles))//如果只要求用户登录,即可访问的话18                 return true;19             bool isAccess = JudgeAuthorize(httpContext.User.Identity.Name, StrRoles);20             if (StrRoles.Length > 0 && isAccess) //先判断是否有设用户权限,如果没有不允许访问21                 return false;22 23             return true;24         }25         /// 26         /// 根据用户名判断用户是否有对应的权限27         /// 28         /// 29         /// 30         /// 
31 private bool JudgeAuthorize(string UserName, string[] StrRoles)32 {33 string UserAuth = GetRole(UserName); //从数据库中读取用户的权限34 return StrRoles.Contains(UserAuth, //将用户的权限跟权限列表中做比较35 StringComparer.OrdinalIgnoreCase); //忽略大小写36 }37 38 39 40 // 返回用户对应的角色, 在实际中, 可以从SQL数据库中读取用户的角色信息 41 private string GetRole(string name)42 {43 switch (name)44 {45 case "aaa": return "User";46 case "bbb": return "Admin";47 case "ccc": return "God";48 default: return "Fool";49 }50 } 51 }52 }

以上的代码只是示例而已。你可以将实际的权限控制逻辑写在自定义的权限控制类(MyAuthAttribute)里面。如果在特定的业务过程中,用户没有访问权限,就返回false。然后我们要做的就是把这个类属性放在要控制的控制器(Controller)或者Action上面。代码如下所示。

1      [MyAuth(Roles = "User")] 2         public ActionResult About()3         {4             return View();5         }

这样,我们就完成了简单的自定义权限了。

本文转自陈哈哈博客园博客,原文链接http://www.cnblogs.com/kissazi2/archive/2013/01/12/2857992.html如需转载请自行联系原作者

kissazi2

你可能感兴趣的文章
VS2013 查看程序各个函数的CPU利用率<转>
查看>>
python-标识符(Identifiers)和关键字(keywords)
查看>>
iframe双滚动栏 解决方案 CSS3 overflow-y 属性
查看>>
rsync数据同步工具
查看>>
文件上传限制文件类型
查看>>
基于Android平台的会议室管理系统具体设计说明书
查看>>
Linux常见命令(四)——mkdir
查看>>
正则表达式基础知识
查看>>
Web下的HTTPS应用
查看>>
perl数组的长度与元素个数
查看>>
Netty线程模型
查看>>
『Kaggle』Sklearn中几种分类器的调用&词袋建立
查看>>
017_nginx重定向需求
查看>>
[UWP]涨姿势UWP源码——RSS feed的获取和解析
查看>>
判断一个变量是否为空的方法
查看>>
linux 学习一:安装jdk和tomcat
查看>>
[js高手之路]html5 canvas动画教程 - 边界判断与反弹
查看>>
Lua--------------------unity3D与Slua融合使用
查看>>
IP视频通信中的"丢包恢复技术”(LPR)
查看>>
java序列化/反序列化之xstream、protobuf、protostuff 的比较与使用例子
查看>>