【发布时间】:2010-11-17 15:48:10
【问题描述】:
我正面临一个我已经研究了很多但仍然找不到解决方案的案例。 我的任务是在 ASP.NET MVC 1 应用程序中完成角色的实现。 这里的情况与应用程序权限方面的一般做法相反。 假设我们在一个 5 页的网站中有两个角色,操作员和经理。拥有一个继承这两个角色的用户,我想根据以下模式允许和拒绝查看页面的权限:
对于第 1 页,Operator 角色允许用户查看,但 Manager 角色拒绝;在这种情况下,我想让具有这两个角色的用户查看页面;
对于第 2 页,Operator 角色拒绝用户查看,Manager 角色也拒绝用户查看;当两个角色都拒绝用户查看页面时,这是我真正想要拒绝角色的唯一情况。
因此,每当用户继承多个角色时,应确定他无法查看页面的是完全拒绝(他的所有角色都被拒绝),并且只要他有一个允许的角色,即使他的所有其他角色角色拒绝,他仍然可以查看该页面。
有人知道如何实现吗?
编辑:
除了站点地图中使用的内容之外,以下只是我们应用程序中如何完成授权的一瞥。 您可以看到下面的规则正在使用多个配置文件。我上面描述的情况需要与下面的实现一起工作。
<Rules xmlns="urn:artemis.runtime.web.security">
<!-- RUNTIME -->
<Rule roles="*" resource="^Artemis\.Runtime\.Web\.FilesController\..*" permission="Allow" />
<!-- ABERTURA GERAL -->
<Rule roles="*" resource="^Tagus\.Logistics\.Web\.Controllers\..*" permission="Allow" />
<Rule roles="Gestor Cliente,DUN" resource="^Tagus\.Logistics\.Web\.Controllers\.PlanningVsEffectiveController\..*" permission="Deny" />
</Rules>
【问题讨论】:
-
无论谁对我的问题评分,我都想知道它有什么问题。不要在没有解释的情况下直接降价。
-
这是习惯吗?我以前从未见过这样的规则?
-
是的,它是定制的。但在其根部,它采用 Rule 标记中描述的配置文件并将它们相互比较,就像常规的 ASP.NET Membership 规则一样。如果它会如此不同,我会解释它。
-
嗯,我认为问题就在于此。 MVC 使用 ActionFilters 拒绝对控制器和操作方法的访问。如果我没看错,而且我不是会员规则专家”,那么您实际上拒绝访问控制器类。看起来与开箱即用的 MVC 如何处理安全性完全脱节,在这种情况下,这个问题真的不是关于 MVC。
-
很抱歉,如果我不太了解授权,以便能够分辨出这与 MVC 框架处理它的方式不同,但我被赋予了任务,因为我我使用 MVC,我不得不提到它。我正在寻求帮助、提示,无论人们能给我什么。