2012-04-27 122 views
35

所以這裏是這種情況,我有一個Asp.Net應用程序使用自定義身份驗證提供程序&,但我們需要允許對應用程序中的特定文件夾進行完全匿名訪問(即)。允許對web.config中的單個文件夾進行匿名身份驗證?

在IIS管理器,您可以設置文件夾的身份驗證模式,但設置保存C:\Windows\System32\inetsrv\config\applicationHost.config文件中as described here

爲更容易安裝,這將是巨大的,如果我能我的web.config中設置此但經過一番嘗試,我認爲這可能是不可能的。

有誰知道嗎?

非常感謝

+0

你爲什麼要允許匿名到該文件夾​​? – 2012-04-27 13:01:43

+0

大部分應用程序只能訪問已購買訪問權的民衆,但我們想向外界展示一些免費內容(以誘使人們購買訪問)。 – 2012-04-27 14:29:55

+0

其最常見的問題和答案是非常簡單的,因爲 – 2012-04-27 14:41:08

回答

35

使用<location>配置標記,並<allow users="?"/>允許匿名僅或<allow users="*"/>所有:

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

這是我第一次嘗試,但它不起作用。我懷疑這些位置授權設置僅在使用表單身份驗證運行時纔有效。 – 2012-04-27 14:28:06

+0

,似乎是克里斯Fewtrell案件。當然,使用Windows身份驗證,似乎並不重要。 – mattpm 2018-02-27 00:42:03

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

另外:如果你想寫通過網站,文件夾上的東西,您必須授予文件夾的IIS_User權限

41

第一種方法是修改您的web.config中使用<location>配置標記,並<allow users="?"/>允許匿名或<allow users="*"/>所有:

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

如果這個方法不工作,那麼你可以採取以下方法這需要做一個小的修改到IIS applicationHost的.config。

首先,anonymousAuthentication節的overrideModeDefault從 「拒絕」 更改C到 「允許」:\ WINDOWS \ SYSTEM32 \ INETSRV \設置\的applicationHost.config:

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

-1不要託管localy?當你沒有訪問apphost.conf? – Dementic 2014-09-22 13:26:04

+8

原文專門引用了applicationHost.config文件。對原始帖子的回答看起來很糟糕,但不符合您的場景的具體限制。 – 2014-09-22 15:42:05

+0

「這將是巨大的,如果我能我的web.config中設置其爲」 – Dementic 2014-09-22 19:49:28

0

爲了使它工作,我建立我的目錄是這樣的:

項目 公共 限制

所以我編輯我的公共文件夾的webconfig:

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

而對於我的受限文件夾:

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

我希望我幫助。

0

我添加了網頁。配置到特定的文件夾說:「用戶」(2015年VS,C#) 和添加以下代碼

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

最初我使用的位置標記,但沒有奏效。

相關問題