【问题标题】:Restrict access to different site sections by ip通过 ip 限制对不同站点部分的访问
【发布时间】:2011-11-09 12:36:39
【问题描述】:

在我们的 MVC 3 解决方案中,我们有一个包含许多部分的站点。客户希望能够通过 IP 地址(来自管理部分)管理对每个部分的访问。执行此要求的标准方法是什么? 我明白了,就像这样:每个部分都有一个通配符列表,代表 IP 地址,然后我们以某种方式使用这个通配符验证 IP 地址。

【问题讨论】:

  • 是的,差不多就是这样。到目前为止你有什么?什么有效?什么没有? (您如何处理更改 IP 地址?使用 NAT?使用 IPv6?)
  • 我还没有尝试任何东西,因为我认为这很标准,必须有标准的解决方案。关于 IPv6 - 是的,如果我能验证 IPv^ 地址就完美了

标签: asp.net-mvc wildcard ip-restrictions


【解决方案1】:

我建议不要在您的代码中直接使用 IP 地址 - 这些地址往往会不时更改。一定要创建“区域”系统,就像在许多个人防火墙中一样。

我的解决方案基本上是这样的:

创建自定义授权属性

public class AuthorizeZone: AuthorizeAttribute
{
    private string _zone; 
    public AuthorizeZone(string zoneName)
    {
        _zone = zoneName;
    }

    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        var zone = GetZoneIpMappingsFromXMLorDB_IdeallyCached(_zone);
        return zone.ContainsIp(httpContext.Request.UserHostAddress); // implement by simple list or ip-mask
    }        
}

然后你就这样使用它

[AuthorizeZone("Intranet")]
public ActionResult Foo()
{}

您的区域定义由您决定,使用 XML、数据库等...

【讨论】:

  • 感谢您的建议。但它不能满足我的需求。我需要的东西:一些由非专家编辑 ID 列表的简单灵活的方法以及检查此权限的方法。但无论如何,我会使用你的想法
  • 我的解决方案肯定会满足您的需求 - 一旦您在数据库中拥有“区域”,您就可以进行一些用户友好的管理来编辑它们
猜你喜欢
  • 2011-05-13
  • 2021-12-16
  • 2018-02-18
  • 1970-01-01
  • 1970-01-01
  • 2018-03-03
  • 2010-11-26
  • 2010-12-05
相关资源
最近更新 更多