【发布时间】:2013-08-05 16:34:38
【问题描述】:
我知道在控制器顶部的 MVC 中,您可以使用 [Authorize()] 属性将整个控制器的访问权限限制为某些经过身份验证的用户和/或角色,但不能通过 IP,但这必须在每个控制器实例。有没有办法将整个 MVC 区域的访问限制为经过身份验证的用户/角色或请求源 IP?
【问题讨论】:
-
搜索自定义授权属性
-
我不想创建自己的属性。我只想采用内置的角色/用户授权控制并在区域级别应用它们。如果我可以在区域级别对 IP 应用一些代码检查也会很好,我知道我可以制作一个 .cs 文件并从每个控制器操作中调用它,但这有点乏味。
-
您想到了什么“内置角色/用户授权控制”?除了
[Authorize]属性,我想不出任何东西。您可以为您的区域拥有一个基本控制器,让该区域中的所有控制器都派生自该基本控制器,并在基本控制器上添加该自定义授权属性。这将负责整个区域的授权,您可以对其进行自定义以通过 IP 限制 -
我说的是内置的 ASP.Net 成员资格和角色提供程序。当我查找自定义授权属性时,它似乎主要围绕将其调整为自定义提供程序。我没有考虑制作一个基础控制器来派生,我认为这会很完美。如果您想对此做出回答,我会将其标记为我的解决方案。
-
请注意,我在接受的答案中更新了 IP 地址逻辑。另外,我没有测试代码,所以可能有错误。
标签: asp.net-mvc-4 asp.net-mvc-areas razor-2