asp.net-mvc - 通过ip限制对不同站点部分的访问

标签 asp.net-mvc wildcard ip-restrictions

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

最佳答案

我建议不要在代码中直接使用 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、数据库,等等......

关于asp.net-mvc - 通过ip限制对不同站点部分的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8065125/

相关文章:

asp.net - Visual Studio 2015(最新更新)发布功能不编译 ASP.NET Core RC1 源

mysql - MySQL全文搜索中的通配符搜索

security - 我们如何保护 VSTS 中的数据不被 API 访问?

laravel - 限制公共(public) Web 应用程序访问特定动态源 IP 地址

java - Lucene 通配符匹配在化学符号上失败(?)

c# - IP 和域名限制

jquery - 通过 Json 读取 ASP.net MVC View 中的列表集合时出现问题

asp.net-mvc - ASP .NET MVC 在 View 之间存储大量参数

asp.net-mvc - WCF服务生成Excel文件(10000行)并将其发送给客户端(性能问题)

linux - 在其他参数中使用通配符的值