2010-03-15 92 views
4

我有一個管理網站設置爲另一個網站內的虛擬應用程序。在虛擬應用程序中忽略表單身份驗證

我想觀衆子目錄(虛擬應用程序)進行promtped使用相同的Forms身份驗證設置主父網站上的憑據

是否嘗試過各種各樣的東西,但不能讓它工作,包括

刪除從虛擬應用程序的web.config

複製相同<authentication mode="Forms"><authorization>,所有<authentication mode="Forms"><authorization><membership><roles>節從父個<roles>部分的虛擬應用程序的web.config

使用的虛擬目錄,而不是虛擬應用

但我從來沒有得到promted憑據

任何人知道如何得到這個設置?

感謝

UPDATE:

現在得到它從父繼承權限,在IIS中刪除應用程序的名稱(使它成爲一個虛擬目錄,而不是一個虛擬的應用程序)

但是,這會將管理站點中的所有路徑都擰緊,例如:

例如我收到以下錯誤

文件'/Site.master'不存在。

所以我應該使用虛擬目錄(這似乎從父母繼承認證)?

或者一個虛擬應用程序(當前不從父代繼承auth,但具有正確的相對路徑)?

這裏的父配置

<membership defaultProvider="SqlServerMembershipProvider"> 
      <providers> 
       <add connectionStringName="xxxxxxxx" requiresQuestionAndAnswer="false" applicationName="/" requiresUniqueEmail="true" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression="" name="SqlServerMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> 
      </providers> 
     </membership> 
     <roleManager enabled="true" defaultProvider="SqlServerRoleProvider"> 
      <providers> 
       <add connectionStringName="xxxxxxx" applicationName="/" name="SqlServerRoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> 
      </providers> 
     </roleManager> 

     <authentication mode="Forms"> 
      <forms name=".EPiServerLogin" loginUrl="login.aspx" timeout="120"/> 
     </authentication> 
     <authorization> 
      <deny users="?"/> 
     </authorization> 

回答

1

我需要使用一個單一的標誌上的解決方案,如這裏所描述

主要點的存在,每個站點需要使用的cookie值相同的加密密鑰。因此,此machineKey元素需要添加到涉及單點登錄的每個站點。

+0

Bah,我通常也會提及機器鍵 - 我想我只是假設它是低於主要應用程序,它會分享它,很好知道供將來參考:S – 2010-03-17 19:30:28

1

你如何configured authorization

此外,我假設你還沒有在父站點進行身份驗證?

在admin子目錄,你應該有這樣的事情在你的web.config以下(很明顯,你可以有更多的信息,在那裏爲好):

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

這將拒絕所有匿名用戶,但允許所有經過認證的用戶訪問。如果您使用的是角色提供,僅允許某些角色,您可以輕鬆地擴展這個:

 <allow roles="Admin" /> 
     <deny users="*" /> 

請注意,您需要有「拒絕所有用戶」,作爲默認行爲是允許所有用戶。授權作品「自上而下」,因爲它從列表的頂部開始,一旦找到匹配,就會停止處理,所以如果用戶處於「管理員」角色,則不會進入「拒絕所有用戶「規則。

您也可以使用<location> element在根web.config中對此進行配置。

回覆評論

而且你的認證/授權父站點的所有作品?

你可以編輯你的問題,包括(消毒)web.config部分你已經嘗試過,所以我們可以看到是否有任何明顯缺失 - 例如,如果你使用角色鎖定管理區域,你有啓用它(<roleManager enabled="true">,默認爲false)。

+0

是的,我試過了,沒有授權部分。允許所有annonymouse,拒絕所有匿名,甚至拒絕所有用途(*),但我永遠不會提示輸入憑據 – ChrisCa 2010-03-15 14:02:50

+0

是的,我沒有在父站點中配置。我可以訪問它,並重定向到登錄頁面,但是當我去/管理我可以查看該網站,而不被提示輸入憑據 – ChrisCa 2010-03-15 14:15:18

+0

我的意思是說「認證」,而不是「配置」在最後的評論 – ChrisCa 2010-03-15 14:21:50

0

我們在這裏經常做你想做的事情。

我們這樣做:根級是一個虛擬應用程序,它包含主web.config和global.ascx。我們有一個普通的文件夾,裏面有'Admin'。在裏面,我們有一個小型的web.config,它只包含<authorization> XML信息。您需要某個登錄頁面,無論是根目錄還是Admin文件夾。

我在你的文章中是否有涉及三個應用程序/目錄(應用程序,父應用程序,應用程序的管理員)或僅兩個(應用程序&它是管理員)有點困惑。我在這裏做了一個關鍵的假設,那就是兩個。如果你確實有三個,那麼將會有更多的工作去做這件事。

alt text http://i42.tinypic.com/t5j028.png

+0

是的,它只是2個站點。家長(主要頂級網站)和管理員(這是子網站) 它現在被分類 - 我需要做的是我在上面發佈的單點登錄文章中的建議之一 – ChrisCa 2010-03-16 17:44:31

相關問題