微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

asp.net-mvc – 如何扩展/架构ASP.NET MVC 3授权处理此场景的属性

我一直在试图通过这个答案,找不到一个很好的解决方案如何正确地做到这一点.

我已经阅读了这些文章
http://schotime.net/blog/index.php/2009/02/17/custom-authorization-with-aspnet-mvc/
http://geekswithblogs.net/brians/archive/2010/07/08/implementing-a-custom-asp.net-mvc-authorization-filter.aspx
ASP.NET MVC custom authorization
http://davidhayden.com/blog/dave/archive/2009/04/09/CustomAuthorizationASPNETMVCFrameworkAuthorizeAttribute.aspx
Custom Authorize Attribute additional Param?

想想也许最后一个是接近的.

场景:

>用户创建角色
>用户可以指定角色具有的访问权限.
>用户用户添加到这些角色
>用户也是部门的一部分.

所以在控制器中我怎么说一个用户可以访问一个动作,因为我不知道用户管理员创建的角色是什么?

所以在逻辑…让我们说我有一个任务控制器与“创建”,“细节”.该任务有一个“服装”系.

>任务:
– TaskID
– TaskTitle
– TaskDepartmentID

> – 用户
用户名
– 角色
– 部门

我将以某种方式将“创建”动作与“创建任务”功能相关联
我将以某种方式将“详细信息”操作与“查看任务详细信息”功能相关联

管理员添加一个名为“任务用户”的新角色,并说这个角色可以“创建任务”
管理员还将允许此角色“查看任务详细信息”
管理员将打开“部门级安全性”

创建:
当在控制器上调用任务创建时,我需要确保用户在允许“创建任务”的角色中.所以认情况下,我不能发送允许进入授权属性的“角色”,因为我不知道它们.我以某种方式需要发送用户拥有的所有角色,并查看角色是否可以访问“创建任务”

用部门安全查看:
当另一个用户去查看这个任务时,他们可以访问“查看任务详细信息”(我可以弄清楚我解决了第一个问题).但是,由于该任务是另一个部门,而是他们所在的其他部门,我需要拒绝访问.如果任务是用户所在部门的一部分,用户只能查看任务详细信息.

这是我无法想象的.如何正确扩展AuthorizeAttribute,以便我可以通过GerRolesForUser发送角色列表,因为它只接受一个字符串,以及如何识别它的Action,然后通过检查部门ID来限制其他级别的安全性.

部门ID不一定必须被缓存,所以我可以在控制器级别做到这一点.

解决方法

我有一些类似的问题,我没有使用Authorize属性.

相反,我决定扩展Controller类并覆盖OnActionExecuting的实现.在我的实施中,我可以执行所有的部门用户所属的检查,以及他是否足够好看其他部门的数据.看看这个方法是否适合你.

原文地址:https://www.jb51.cc/aspnet/246722.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐