允许web.config中的单个文件夹的匿名身份validation?
所以这里是这种情况,我有一个Asp.Net应用程序使用自定义身份validation和成员资格提供程序,但我们需要完全匿名访问(即)到应用程序中的特定文件夹。
在IISpipe理器中,您可以设置文件夹的身份validation模式,但是这些设置保存在C:\Windows\System32\inetsrv\config\applicationHost.config
文件中,如此处所述
为了使安装更容易,如果我可以在我的web.config中设置它,但是经过几次尝试,我认为这可能是不可能的。
有谁知道吗?
非常感谢
使用<location>
configuration标签, <allow users="?"/>
只允许匿名或<allow users="*"/>
用于全部:
<configuration> <location path="Path/To/Public/Folder"> <system.web> <authorization> <allow users="?"/> </authorization> </system.web> </location> </configuration>
第一种方法是使用<location>
configuration标签修改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中没有任何东西可以启用它。 如果您的目标系统没有这种级别的访问权限,则必须与您的托pipe提供商或系统pipe理员进行讨论。
其次,在设置overrideModeDefault="Allow"
之后,你可以把下面的代码放到你的web.config中:
<location path="Path/To/Public/Folder"> <system.webServer> <security> <authentication> <anonymousAuthentication enabled="true" /> </authentication> </security> </system.webServer> </location>
<location path="ForAll/Demo.aspx"> <system.web> <authorization> <allow users="*" /> </authorization> </system.web> </location>
另外:如果你想通过网站在这个文件夹上写东西,你必须给这个文件夹一个IIS_User权限
为了使它工作,我build立我的目录是这样的:
项目公共限制
所以我编辑我的公共文件夹的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>
我希望我能帮上忙
我添加web.config到特定的文件夹说“用户”(VS 2015,C#)和添加以下代码
<?xml version="1.0"?> <configuration> <system.web> <authorization> <deny users="?"/> </authorization> </system.web> </configuration>
最初我使用位置标记,但没有奏效。