Mas*_*tro 10 asp.net-mvc authorize
我一直在努力思考这个问题,并且找不到如何正确执行此操作的良好解决方案.
我已阅读过这些文章:
http://schotime.net/blog/index.php/2009/02/17/custom-authorization-with-aspnet-mvc/
http://geekswithblogs.net/brians/archive/ 2010/07/08/implementation-a-custom-asp.net-mvc-authorization-filter.aspx
ASP.NET MVC自定义授权
http://davidhayden.com/blog/dave/archive/2009/04/09/CustomAuthorizationASPNETMVCFrameworkAuthorizeAttribute .aspx
自定义授权属性附加Param?
思考也许最后一个是接近的.
场景:
所以在控制器中我怎么能说用户有权访问某个动作,因为我不知道用户管理员创建的角色是什么?
所以在逻辑中...假设我有一个带有"创建","详细信息"的任务控制器.该任务有一个"服装"部门.
管理员将添加一个名为"任务用户"的新角色并说这个角色可以"创建任务"
管理员还允许此角色"查看任务详细信息"
管理员将打开"部门级安全性"
创建:
当任务创建时在控制器上调用我需要确保用户处于允许"创建任务"的角色中.因此,默认情况下,我无法将允许的"角色"发送到授权属性,因为我不知道它们.我不知何故需要发送用户拥有的所有角色,并查看角色是否可以访问"创建任务"
使用部门安全性查看:
当另一个用户去查看此任务时,他们可以访问"查看任务详细信息"(我可以弄清楚但是我解决了第一个问题).但是,由于任务是针对他们所在的其他部门,我需要拒绝访问.如果任务是用户所属部门之一,则用户只能"查看任务详细信息".
这是我无法弄清楚的.如何正确扩展AuthorizeAttribute以便我可以通过GerRolesForUser发送角色列表,因为它只接受一个字符串,以及如何识别它的Action,然后通过检查Department ID来限制另一个级别的安全性.
部门ID不一定要缓存,所以也许我可以在控制器级别这样做.
我有一些类似的问题,但我没有使用 Authorize 属性。
相反,我决定扩展Controller类并覆盖OnActionExecuting. 在我的实现中,我可以执行所有检查,例如用户属于哪个部门以及他是否足以查看其他部门的数据。看看这个方法是否适合你。