是否可以在Web.config中配置一个位置以仅允许本地连接

gat*_*pia 19 asp.net web-config

我在ASP.Net应用程序中有一个页面(实际上它的Mvc但不重要),我想只允许从本地机器连接到这个页面.我很乐意在Web.config中做这样的事情:

<location path="resources">
  <system.web>
    <authorization>
      <allow ips="local"/>
    </authorization>
  </system.web>
</location>  
Run Code Online (Sandbox Code Playgroud)

我知道这可以通过简单检查后面的页面代码(或控制器),甚至可以只使用IIS配置,但我会喜欢Web.config配置,因为这将是我认为最优雅的解决方案.任何人都知道这是否可行?

Dan*_*iel 30

您可以要求IIS通过Web.config中的IP地址限制对资源的访问:

<location path="resources">
  <system.webServer>
    <security>
      <ipSecurity allowUnlisted="false">
        <clear/>
        <add ipAddress="127.0.0.1"/>
      </ipSecurity>
    </security>
  </system.webServer>
</location>
Run Code Online (Sandbox Code Playgroud)

更多信息

编辑:正如迈克在下面的评论中指出的那样,这需要安装IP和域限制模块.谢谢迈克!

  • 谢谢你的回答.首先,这对我不起作用 - IIS似乎忽略了这个设置.我最终得出结论,在Windows 7上,默认情况下不安装IP和域限制模块.为了使它工作,我必须做"控制面板>程序和功能>打开或关闭Windows功能> Internet信息服务>万维网服务>安全"并勾选"IP安全". (8认同)

lan*_*nce 4

这不是您所要求的,但您可以指定  本地计算机的用户。我无法想象这是否实用,除非您想要授权的用户数量很少。

<location path="resources">
  <system.web>
    <authorization>
      <allow users="LOCALMACHINENAME\UsernameOfTrustedUser"/>
      <deny users="*"/>
    </authorization>
  </system.web>
</location>
Run Code Online (Sandbox Code Playgroud)