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

t3psigkw  于 2023-08-08  发布在  .NET
关注(0)|答案(5)|浏览(117)

下面是一个场景,我有一个ASP.NET应用程序,它使用自定义身份验证和成员资格提供程序,但我们需要允许完全匿名访问(即)应用程序中的特定文件夹。
在IIS管理器中,可以设置文件夹的身份验证模式,但设置保存在C:\Windows\System32\inetsrv\config\applicationHost.config文件as described here
为了使安装更容易,如果我能在我的web.config中设置这个就太好了,但经过几次尝试,我认为这可能是不可能的。
有人知道其他的吗?
多谢了

yhqotfr8

yhqotfr81#

第一种方法是使用<location>配置标记和<allow users="?"/>来修改web.config,以允许匿名或<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中将匿名身份验证部分的overrideModeDefault从“拒绝”更改为“允许”:

<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>

8qgya5xd

8qgya5xd2#

使用<location>配置标记,并使用<allow users="?"/>仅允许匿名或<allow users="*"/>允许所有匿名:

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

字符串

63lcw9qa

63lcw9qa3#

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

字符串
此外:如果您想通过网站在该文件夹上写入内容,则必须给予IIS_User对该文件夹的权限

wbrvyc0a

wbrvyc0a4#

为了让它工作,我像这样构建我的目录:

  • 项目名称
  • 公用
  • 限制

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

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

字符串
对于我的受限文件夹:

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

  • 和的规格见此处?:

https://learn.microsoft.com/en-us/iis/configuration/system.webserver/security/authorization/add
我希望我帮了你。

mhd8tkvw

mhd8tkvw5#

我将web.config添加到特定的文件夹中,比如“Users”(VS2015,C#),并添加了以下代码

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

字符串
最初我用的是位置标签,但没有工作。

相关问题