允许对web.config中的单个文件夹进行匿名身份验证?

时间:2012-04-27 13:00:03

标签: asp.net authentication web-config

所以这是场景,我有一个使用自定义身份验证的Asp.Net应用程序&成员资格提供者,但我们需要允许完全匿名访问(即)应用程序内的特定文件夹。

在IIS管理器中,您可以设置文件夹的身份验证模式,但设置会保存在C:\Windows\System32\inetsrv\config\applicationHost.config文件as described here

为了使安装更容易,如果我可以在我的web.config中设置它会很棒,但经过几次尝试后我认为这可能是不可能的。

有人知道吗?

非常感谢

5 个答案:

答案 0 :(得分:50)

第一种方法是使用<location>配置标记修改您的web.config,并<allow users="?"/>允许匿名或<allow users="*"/>为所有人:

<configuration>
   <location path="Path/To/Public/Folder">
      <system.web>
         <authorization>
            <allow users="?"/>
         </authorization>
      </system.web>
   </location>
</configuration>

如果该方法不起作用,那么您可以采用以下方法,该方法需要对IIS applicationHost.config进行少量修改。

首先,在C:\ Windows \ System32 \ inetsrv \ config \ applicationHost.config中将anonymousAuthentication部分的overrideModeDefault从“Deny”更改为“Allow”:

<section name="anonymousAuthentication" overrideModeDefault="Allow" />

overrideMode是IIS的安全功能。如果在applicationHost.config中系统级别不允许覆盖,则无法在web.config中执行任何操作来启用它。如果您在目标系统上没有此级别的访问权限,则必须与托管服务提供商或系统管理员进行讨论。

其次,在设置overrideModeDefault="Allow"之后,您可以将以下内容放在web.config中:

<location path="Path/To/Public/Folder">
  <system.webServer>
    <security>
      <authentication>
        <anonymousAuthentication enabled="true" />
      </authentication>
    </security>
  </system.webServer>
</location>

答案 1 :(得分:43)

使用<location>配置代码和<allow users="?"/>仅允许匿名或<allow users="*"/>允许所有人:

<configuration>
   <location path="Path/To/Public/Folder">
      <system.web>
         <authorization>
            <allow users="?"/>
         </authorization>
      </system.web>
   </location>
</configuration>

答案 2 :(得分:3)

<location path="ForAll/Demo.aspx">
 <system.web>
  <authorization>
    <allow users="*" />
  </authorization>
 </system.web>
</location>

另外:如果你想通过网站在该文件夹上写一些东西,你必须给该文件夹的IIS_User权限

答案 3 :(得分:1)

为了使它工作,我构建我的目录:

项目  上市  限制

所以我编辑了我的公共文件夹的webconfig:

<location path="Project/Public">
    <system.web>
      <authorization>
        <allow users="?"/>
      </authorization>
    </system.web>
  </location>

对于我的Restricted文件夹:

 <location path="Project/Restricted">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorizatio>
    </system.web>
  </location>

请参阅此处了解*和?:

的规格

https://docs.microsoft.com/en-us/iis/configuration/system.webserver/security/authorization/add

我希望我有所帮助。

答案 4 :(得分:0)

我将web.config添加到特定文件夹中说&#34;用户&#34; (VS 2015,C#) 以及添加的以下代码

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

最初我使用的是位置标记但是没有用。