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

时间:2015-01-07 14:39:40

标签: asp.net asp.net-mvc 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

2 个答案:

答案 0 :(得分:0)

你有两种方法可以实现它。

第1名:<modules runAllManagedModulesForAllRequests=“true” /> Meaning
在您的web.config中添加<modules runAllManagedModulesForAllRequests="true" />

(IIS&lt; v7)
第二名:Global.asax Events in IIS 6 and IIS 7 for Static Resources
添加通配符托管处理程序以提供每个请求(包含由iis直接处理的静态文件)

答案 1 :(得分:0)

您可以将新的Web.config放入需要应用权限的文件夹中。在里面做类似的事情

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

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

如果这对您不起作用,请尝试通过IIS管理器进行操作并查看其效果,然后将其复制。