通过ip限制访问不同的站点部分



在我们的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,数据库,无论什么…

相关内容

  • 没有找到相关文章

最新更新