如何使用 ASP.NET Windows Forms 身份验证防止非本地访问

发布于 2024-07-29 13:06:14 字数 119 浏览 5 评论 0原文

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

我怎样才能做到这一点?

谢谢!

I have an application that uses http-calls to local webservices. While the whole application secured by ASP.NET forms authorization, I want a specific folder to be available to local-calls only.

How can I do that?

Thanks!

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

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

发布评论

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

评论(3

迷离° 2024-08-05 13:06:14

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

  1. 扩展表单身份验证来解决这个问题(我认为它在某些地方是密封的)。
  2. 使该文件夹中的所有项目继承自检查调用者 IP 地址的基类。
  3. 使用 IIS 将该目录锁定到本地客户端(在 IIS7 中,我相信这可以在 .config 中完成)。
  4. 添加一个 HTTP 处理程序来拦截对该目录的调用,如果不是本地目录,则重定向它们(这可能是最简单的)。

希望有帮助,有点模糊,但一个起点。

I don't think there is anything native in forms authentication that will do that.
You'll either have to;

  1. Extend forms authentication to cope with this (I think it is sealed in places though).
  2. Have all of the items in that folder inherit from a base class that checks the IP address of the caller.
  3. Use IIS to lock down that directory to local clients (in IIS7 this can be done in .config I believe).
  4. Add a HTTP handler to intercept calls to that directory and redirect them if not local (this might be easiest).

Hope that helps, a little vague but a starting point.

原谅过去的我 2024-08-05 13:06:14

Ryan 的所有建议都很好。 这里还有另外两个(他的观点#2 的变体)。

在 Global.asax 中,您可以使用 Application_BeginRequest 执行以下操作:

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

或为该文件夹中的每个 aspx 页面使用 MasterPage 并将以下内容放入 Page_Load 中

if (Request.UserHostAddress != "127.0.0.1" && !Request.UserHostAddress.StartsWith("172.16"))
{
    Response.Redirect("http://www.kwiktrip.com", true);
}

All of Ryan's suggestions are good. Here are two more (variations on his point # 2).

In the Global.asax, you can use the Application_BeginRequest to do something like this:

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

or use a MasterPage for each aspx page in that folder and put the following in the Page_Load

if (Request.UserHostAddress != "127.0.0.1" && !Request.UserHostAddress.StartsWith("172.16"))
{
    Response.Redirect("http://www.kwiktrip.com", true);
}
暮倦 2024-08-05 13:06:14

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

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

In your web.config you can do something like:

  <location path="~/blog/add">
    <system.web>
      <authorization>
        <allow users="admin" />
        <deny users="*" />
      </authorization>
    </system.web>
  </location>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文