【问题标题】:Deny static content for unauthorized users using web.config使用 web.config 拒绝未经授权的用户的静态内容
【发布时间】:2015-01-07 14:39:39
【问题描述】:

在我的 asp.net MVC 应用程序中,我试图拒绝未经授权的用户访问子文件夹中的 html 文件。但它没有按预期工作。下面是现在使用的 web.config 部分。

<configuration>

<system.web>
  <compilation debug="true" targetFramework="4.5" />
  <authentication mode="Forms">
    <forms loginUrl="~/" defaultUrl="~/" slidingExpiration="true" timeout="60">
    </forms>
  </authentication>
  <authorization>
    <deny users="?" />
  </authorization>
</system.web>

<location path="Docs/help/index.html">
  <system.web>
    <authorization>
      <deny users="?" />
    </authorization>
  </system.web>
</location>

</configuration>

我认为全局拒绝用户将阻止所有页面的所有未经授权的访问,否则我们应该给予特定权限。如果我错了,请纠正我。

但在我的情况下,即使http://siteurl.com/Docs/help/index.html 仍然能够为未授权用户访问。

IIS - 7.5、.NET - 4.5、MVC - 4

请帮我解决这个问题。

MG

【问题讨论】:

  • 你试过只指定文件夹吗? location path="Docs/help"
  • 是的,我也试过了。 http://siteurl.com/Docs/help 只是重定向到我的登录页面。但不是http://siteurl.com/Docs/help/index.html.. :-(

标签: asp.net asp.net-mvc web-config


【解决方案1】:

你有两种方法来实现它。

第一个:<modules runAllManagedModulesForAllRequests=“true” /> Meaning
在您的 web.config 中添加 &lt;modules runAllManagedModulesForAllRequests="true" /&gt;

(IIS 第二名:Global.asax Events in IIS 6 and IIS 7 for Static Resources
添加通配符托管处理程序来服务每个请求(包括由 iis 直接处理的静态文件)

【讨论】:

    【解决方案2】:

    您可以在需要应用权限的文件夹中放置一个新的 Web.config。在里面做这样的事情

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <system.web>
            <authorization>
                <deny users="?" />
            </authorization>
        </system.web>
    </configuration>
    

    或者您可能需要用&lt;security&gt; 标记包装&lt;authorization&gt; 标记。

    如果这对您不起作用,请尝试通过 IIS 管理器进行操作,看看它是如何工作的,然后复制它。

    【讨论】:

      猜你喜欢
      • 2011-04-21
      • 2020-04-05
      • 1970-01-01
      • 1970-01-01
      • 2014-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-13
      相关资源
      最近更新 更多