使用 web.config 拒绝未经授权用户的静态内容

Deny static content for unauthorized users using web.config

在我的 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

你有两种实现方式。

第一名:<modules runAllManagedModulesForAllRequests=“true” /> Meaning
在您的 web.config

中添加 <modules runAllManagedModulesForAllRequests="true" />

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

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

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

或者您可能需要用 <security> 标签包裹 <authorization> 标签。

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