0

我敢肯定,這個問題的變種之前已經問過很多次了,但我無法完全找到答案。ASP.NET窗體身份驗證 - 多登錄

我有一個網站是一個網上商店。我們有以下登錄/賬戶管理要求:管理角色的

會員登錄/管理員的專業作用 會員登錄到客戶角色的/臨 成員沒有他們登錄到一個特定的區域,但在結賬時,我們希望他們能夠登錄,以便他們不必再次填寫他們的送貨細節。

因此,我們希望URL結構是這樣的:

/Checkout.aspx(/登錄表單) /Admin/Login.aspx /Pro/Login.aspx(只有小小的例外是在這裏我們確實希望用戶無需登錄即可訪問/Pro/Register.aspx頁面 - 原因很明顯)

我讀過這樣的話,如果我從主web.config中刪除身份驗證配置並且在每個專業和管理文件夾中創建一個web.config文件。在IIS 7中,我將文件夾更改爲應用程序,但這些頁面無法從主站點訪問主頁面。

我正在以正確的方式進行操作嗎?

在此先感謝。

回答

0

我不知道爲什麼你需要的文件夾切換到應用程序,但你在每個孩子目錄中創建「子」 web.config文件中的策略是實現這一目標的一個正確的方法。

另一種方法是聲明在根web.config每一頁或目錄的權限,如下面的例子中(從here):

<configuration> 
    <system.web> 
     <authentication mode="Forms" > 
      <forms loginUrl="login.aspx" name=".ASPNETAUTH" protection="None" path="/" timeout="20" > 
      </forms> 
     </authentication> 
<!-- This section denies access to all files in this application except for those that you have not explicitly specified by using another setting. --> 
     <authorization> 
      <deny users="?" /> 
     </authorization> 
    </system.web> 
<!-- This section gives the unauthenticated user access to the Default1.aspx page only. It is located in the same folder as this configuration file. --> 
     <location path="default1.aspx"> 
     <system.web> 
     <authorization> 
      <allow users ="*" /> 
     </authorization> 
     </system.web> 
     </location> 
<!-- This section gives the unauthenticated user access to all of the files that are stored in the Subdir1 folder. --> 
     <location path="subdir1"> 
     <system.web> 
     <authorization> 
      <allow users ="*" /> 
     </authorization> 
     </system.web> 
     </location> 
</configuration> 
+0

嗨Widor,謝謝你的回答。我不確定這個例子如何告訴ASP.NET有人訪問/Pro/SecuredPage.aspx應該重定向到/Pro/Login.aspx,或者事實上只有專業角色的成員應該能夠登錄在/Pro/Login.aspx - 我誤解了什麼? – higgsy

+0

我明白你想要什麼,但直到有人登錄後,你將如何知道他們屬於哪個角色?!也許你想看看http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.login.loggedin.aspx,並在代碼隱藏中處理頁面特定的登錄? – Widor

+0

嗨Widor - 這是非常真實的,但是如果一個標準客戶登錄到/ Pro /部分,顯示消息表示他們無權訪問此目錄是完全可以接受的。 – higgsy

0

你不應該創建一個新的應用程序;只需爲授權的子文件夾包含一個web.config,只允許您希望能夠訪問該文件夾的角色。

+0

嗨安迪 - 這就是我的想法,但是當我把web.config放在子文件夾中時,我收到一條錯誤消息:在應用程序級別之外使用註冊爲allowDefinition ='MachineToApplication'的節是錯誤的。此錯誤可能是由於虛擬目錄未被配置爲IIS中的應用程序。 – higgsy

+0

啊。正確;您需要刪除基本上除授權元素以外的所有內容: <! - 或者Pro - >