ASP.NET MVC授权:角色的权限
|
我知道这是一个一直被问到的问题,但是我试图在ASP.NET MVC应用程序中实现基于权限而不是基于角色的授权。因此,我不需要像Manager,Admin或User这样的高级角色,而是需要拥有ViewTask,AddTask,DeleteTask等权限。我已经阅读了大量的评论,似乎最简单的解决方案是将角色视为权限,并定义ViewTask,AddTask和DeleteTask的“角色”。 这样的做法真的是个好主意吗?我的一些担忧是,根据应用程序的大小,您可以获得超过100个角色,然后排除在Cookie中执行角色缓存的能力,因此每次调用User.IsInRole都会触发数据库。如果每个操作方法都将使用[Authorize(Roles =“XXXX”)]进行装饰,我会看到严重的性能问题? 我的另一个问题是,我仍然希望保持角色的概念,以便管理员可以简单地将用户与具有预定义权限集的角色相关联。使用我以上思路的方法是在我的应用程序名为Group中创建一个单独的实体,该组将负责跟踪分配给该组的ASP.NET角色。因此,当用户与组关联时,我可以检索需要分配给用户的ASP.NET角色并添加所有角色。 有没有人以这样的方式实施系统?对这种方法的任何意见或想法将不胜感激。 谢谢 解决方法我同意@jlew关于缓存用户的数据,以及缓存何时到期 – 只是重新加载它。没有任何努力强制这些数据保持持续。另外,如果你想离开ASP.net角色提供程序,你可以滚动自己的安全性,因为我有 described in this reply.这具有允许非常自定义安全解决方案角色/个人权限的优势。以下只是一个想法,我最近一直在玩耍(只是一些食物的想法)。为什么不使用MVC的RESTful URL来定义“权限”。例如: / tasks / add可以定义添加任务的权限。这些可以以某种方式进行层次化,以便赋予用户对/ tasks / add的权限也赋予他们对/ tasks的权限。然后,您可以使用一个全局操作过滤器,该过滤器将在给定路由值的情况下构建URL。这也将允许通过运行时可配置的单个项目安全性的真正有趣的方法。例如,/ tasks / edit / 23可以以某种方式授予id 23的任务的编辑权限。无论如何,这甚至可能不是有帮助的…但是只是以为我想你可能会考虑。 干杯! (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 身份更改GUID为int
- asp.net-mvc – 在MVC3中下载Azure Blob文件
- asp.net-web-api – Web API中的OData POST的媒体资源支持
- asp.net-mvc – ASP.NET MVC自定义错误页面(StatusCode 404
- asp.net核心 – dotnet cli – “检测包降级”
- 如何衡量我在ASP.NET中的能力水平或技能?
- asp.net-mvc-3 – 如何修改MVC3视图页面中的body类
- 在asp.net web api中不会触发Application_Error
- asp.net-mvc-3 – 可以添加到显示/ EditorTemplates ASP.NE
- asp.net-mvc – 通过子域名到mvc或api的ASP.NET路由
- asp.net-mvc – 使用AJAX绑定时,在创建/更新后IE
- asp.net – 禁用按钮但看起来很活跃
- asp.net webapi UseOAuthBearerAuthentication v
- asp.net-mvc – 如何创建ELMAH SQL Server数据库
- asp.net-mvc – 使ASP.MVC2/VS2010应用程序在IIS
- asp.net-mvc – 保持控制器瘦(太多的动作方法)
- asp.net-mvc – Url.Action如何从模型中添加参数
- asp.net-mvc-4 – 表单身份验证:角色(MVC 4)C#
- 经典的asp字符编码
- asp.net-mvc – 哪个更正确:使用UpdateModel()或
