代码之家  ›  专栏  ›  技术社区  ›  David Salzer

如何使用ASP.NET windows窗体身份验证防止非本地访问

  •  0
  • David Salzer  · 技术社区  · 15 年前

    我有一个使用http调用本地Web服务的应用程序。虽然整个应用程序由ASP.NET窗体授权保护,但我希望特定文件夹仅对本地调用可用。

    我该怎么做?

    3 回复  |  直到 15 年前
        1
  •  2
  •   Ryan O'Neill    15 年前

    我认为表单身份验证中没有任何本机功能可以做到这一点。 你要么必须;

    1. 让该文件夹中的所有项从检查调用方IP地址的基类继承。
    2. 使用IIS将该目录锁定到本地客户端(在IIS7中,我相信这可以在.config中完成)。

        2
  •  1
  •   David    15 年前

    Ryan的建议都很好。这里还有两个(关于他的观点的变化#2)。

    在Global.asax中,您可以使用应用程序_BeginRequest执行以下操作:

    if (Request.UserHostAddress != "127.0.0.1" && !Request.UserHostAddress.StartsWith("172.16") && Request.Url.AbsolutePath.Contains("AdminFolderName"))
    {
        Response.Redirect("~/somenonproectedpageornoaccessmessagepage.aspx", true);
    }
    

    或者为该文件夹中的每个aspx页面使用母版页,并将以下内容放入页面加载

    if (Request.UserHostAddress != "127.0.0.1" && !Request.UserHostAddress.StartsWith("172.16"))
    {
        Response.Redirect("http://www.kwiktrip.com", true);
    }
    
        3
  •  0
  •   leppie    15 年前

    在web.config中,您可以执行以下操作:

      <location path="~/blog/add">
        <system.web>
          <authorization>
            <allow users="admin" />
            <deny users="*" />
          </authorization>
        </system.web>
      </location>