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

发布于 2024-12-14 14:29:11 字数 144 浏览 1 评论 0原文

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

In our MVC 3 solution we have a site with many sections. Customer want to have a possibility to manage access to each section by IP address(from admin part). What are the standard ways of implementing this requirements?
I see, smth like this: every section has a list of wildcards, that represent IP addresses, and then we we somehow validate IP address using this wildcards.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

心不设防 2024-12-21 14:29:11

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

I would suggest not using directly IP addresses in your code - these tend to change from time to time. Do create system of "zones", similar like in many personal firewalls.

My solution would be basically like this :

Create custom authorization attribute

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
    }        
}

you then use it like this

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

Your zones definitions is up to you, use XML, database, whatever...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文