2009-02-03 81 views
2

我們與用戶控件,數據訪問庫,圖形等現有的可公開訪問的Web應用程序,我們要創建一個訪問一些已經存在的網站的一個新的安全部分資源。子文件夾添加認證,而無需創建一個Web應用程序

最初,我們創建的網站作爲(我們希望)一個虛擬目錄的新的部分將允許我們訪問父站點的資源。我們添加了相應的位置信息基礎的web.config(認證和授權),但我們繼續看到下面的錯誤「分析器錯誤信息:這是使用註冊爲allowDefinition =應用程序級別之外‘MachineToApplication’的節是錯誤的這錯誤可能是由虛擬目錄未被配置爲IIS中的應用程序引起的。「

針對這一錯誤,我們創建的目錄作爲新的應用程序。這使我們能夠正確地進行身份驗證,但具有無法訪問父目錄中的任何資源(因爲它在應用程序範圍之外)的缺點。

有沒有什麼辦法,以確保網站的新的部分,而在同一時間利用已有的資源呢?

+0

你使用什麼樣的身份驗證?窗體,Windows?或者這只是從IIS基本或Windows集成身份驗證? – bendewey 2009-02-03 21:28:44

+0

我們使用表單身份驗證。 – ddechant 2009-02-03 22:32:13

回答

5

在您的網站的根web.config文件中,如果添加:

<location path="relativePathToDir"> 
     <system.web> 
      <authorization> 
       <deny users="?"/> 
      </authorization> 
     </system.web> 
    </location> 

這是使用FormsAuthentication爲我工作,用戶被重定向到默認的登錄頁面,如果沒有通過認證

1

刪除應用程序,然後添加這頂級的web.config:

<configuration> 
    <system.web> 
     <!-- applies application wide --> 
    </system.web> 

    <location path="securedirectory" allowOverride="false"> 
     <system.web> 
      <!-- applies only to the path specified --> 
     </system.web> 
    </location> 

</configuration> 

MSDN Reference

3

我輸入了一個摘要,因爲許多人都面臨着有關子文件夾認證的相同情況。

子文件夾授權

  1. ASP.NET只能有一個 申請單 身份驗證模式。
  2. 不同 應用程序不能共享其中資源 。

方案

比方說主頁不應該提示登錄對話框。它應該讓用戶無需登錄即可通過。但是,在相同的應用程序中,可能在另一個文件夾中,另一個頁面需要使用用戶網絡登錄ID來檢查用戶對數據庫表的權限。默認情況下,IE只將主機名稱爲Intranet。通過默認的Intranet設置,如果使用Windows身份驗證,它將不會提示登錄對話框並將用戶登錄名和密碼傳遞給應用程序。然而,棘手的一方是,如果應用程序有一個實際的域名,IE會認爲它是一個Internet站點,如果使用Windows身份驗證,它將提示登錄名和密碼。

唯一不使用Windows身份驗證來啓用Internet站點的登錄對話框的方法是也打開IIS中的匿名身份驗證。但是,您將失去捕獲登錄信息的能力,因爲匿名優先於Windows身份驗證。好消息是有辦法解決這個問題。如果應用程序子文件夾需要捕獲登錄信息,則需要覆蓋web.config中位置元素的父授權。

1在IIS中,配置驗證如下:

  • 啓用匿名身份驗證,
  • 啓用Windows身份驗證

2添加以下Web.Config中。

<authentication mode="Windows" /> 
    <authorization> 
    <allow users="*" /> 
</authorization> 

<!-- secured is the relative subfolder name. deny anonymous user, so only the authenticated login will pass through --> 
<location path="secured" allowOverride="true"> 
    <system.web> 
    <authorization>   
     <deny users="?" /> 
    </authorization> 
    </system.web> 
</location> 
相關問題