2009-04-28 84 views
1
  • 我有一個asp.net web應用程序。
  • 它使用兩個會員供應商。
  • 每個供應商都有兩個登錄頁面。
  • 現在我有根兩個文件夾Folder1中&文件夾2
  • Folder1中使用的是第一成員提供
  • 文件夾2使用2號成員提供

我得到了幾乎所有的工作,包括登入,在這兩個供應商創建用戶等。 唯一的問題是在表單身份驗證我只能定義一個登錄路徑。所以當會話過期或需要登錄才能訪問安全頁面。它只能重新回到頁面中的一個登錄。一個asp.net應用程序中的多個登錄頁面

此外,該部分不能由位置定義。僅通過應用程序。

我怎樣才能得到folder2使用第二個登錄頁面?

  • 如果有什麼我可以定義的位置?
+0

您是否有2個不同的URL或查詢字符串參數,以最初將用戶推送到正確的登錄頁面? – cgreeno 2009-04-28 21:19:02

回答

1

How to override/change FormsAuthentication LoginUrl in certain cases

看來,從不同的人研究,你不能告訴FormsAuthentication有兩個不同的登錄頁面。但沒有任何東西阻止您在兩個文件夾中創建一些基本頁面類或其他代碼,這些代碼可以確定要將哪個登錄頁面導向到哪個頁面。或者,我認爲在FormsAuthentication模塊觸發之前Application_BeginRequest事件觸發,因此您可以在請求被FormsAuthentication重定向之前檢查它們。無論哪種方式,您都將被迫允許匿名用戶使用Folder1和Folder2,這並不理想。

+0

這似乎是唯一的辦法。 – mamu 2009-04-29 18:42:43

1

您需要在web.config中使用<location>元素。您可以使用<location>標籤將授權設置應用於單個文件或目錄。

<location path="/root"> 
    <system.web> 
     <authentication mode="Forms" > 
     <forms name="LoginForm" defaultUrl="default.aspx" 
     loginUrl="/root/login.aspx" protection="Encryption" 
     timeout="30" path="/"/> 
     </authentication> 
    <authorization> 
     <allow users="?" /> 
    </authorization> 
    </system.web> 
</location> 
<location path="/root/admin"> 
    <system.web> 
    <authentication mode="Forms" > 
     <forms name="formName" defaultUrl="login.aspx" 
     loginUrl="/root/admin/login.aspx" protection="Encryption" 
     timeout="30" path="/"/> 
    </authentication> 
    <authorization> 
     <allow users="?" /> 
    </authorization> 
    </system.web> 
</location> 

MSDN

對於集中管理, 設置可以在 Machine.config文件被應用。 Machine.config文件中的設置 定義了 機器範圍的策略,也可以是 用於應用特定於應用程序的 配置使用<location> 元素。開發人員可以提供 應用程序配置文件到 覆蓋機器策略的各個方面。 對於ASP.NET Web應用程序, Web.config文件位於 應用程序的虛擬根目錄 中,並且可選地位於虛擬根目錄下的子目錄 中。

如果您需要1個登錄位置和不同的訪問級別,您可能需要使用roles

<location path="/root"> 
    <system.web> 
    <authorization> 
     <allow roles="admin,root" />/*admin, root is allowed */ 
     <deny users="*" /> 
    </authorization> 
    <system.web> 
</location> 

<location path="/root/admin"> 
    <system.web> 
    <authorization> 
     <allow roles="admin" />/*admin is allowed */ 
     <deny users="*" /> 
    </authorization> 
    <system.web> 
</location> 

用戶可以屬於多個 作用。例如,如果您的網站是 論壇,則某些用戶可能是 擔任成員和 版主。您可能會將每個角色 定義爲在 網站上擁有不同的權限,並且同時擁有這兩個角色 的用戶將擁有兩組 權限。

您可以在 代碼級訪問所有這些元素,如果你想 操縱角色/認證 編程

Page.User.Identity.Name 
Page.User.Identity.IsAuthenticated 
Page.User.Identity.AuthenticationType 
Page.User.IsInRole("string"); 

其他鏈接

Using 2 Membership Providers in asp.net

4 Guys From Rolla Tutorial

The ASP.NET web.config File Demystified

+0

已經嘗試過這個授權是allowmachinetoapplication,所以不能設置位置 – mamu 2009-04-28 21:09:01

相關問題