2009-05-04 75 views
0

我們正在嘗試在我們的站點上實現formsAuthentication,但是在我們尚未能找到解決方案的場景中 - 除了創建我們自己的HttpModule並執行自定義我們自己的邏輯 - 所以我想我會拋出問題,看看這是否是唯一的解決方案。爲站點中的多個子文件夾啓用FormsAuthentication

我們希望在自定義成員資格提供程序上使用formsAuthentication,但希望爲不同的文件夾使用不同的提供程序。我們的網站使用子文件夾(例如〜/ Admin,〜/ GoldCustomer,〜/ SilverCustomer,〜/ BronzeCustomer)對這些部分進行分區,因此我們希望爲每個部分/子文件夾使用不同的成員資格提供程序。使用框架來支持這一點,我們會實現我們的web.config這樣的:這樣做雖然在運行時錯誤結果

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"> 
<location path="Admin"> 
<system.web> 
    <authentication mode="Forms"> 
    <forms name="AdminAuth" loginUrl="~/AdminLogin.aspx" /> 
    </authentication> 
    <membership defaultProvider="AdminProvider" > 
    <providers > 
     <add connectionStringName="ConnString" name="AdminProvider" type="Assembly.AdminMembershipProvider" ... /> 
    </providers> 
    </membership> 
</system.web> 
</location> 
<location path="GoldCustomer"> 
    <system.web> 
    <authentication mode="Forms"> 
    <forms name="GoldCustomerAuth" loginUrl="~/GoldCustomerLogin.aspx" /> 
    </authentication> 
    <membership defaultProvider="GoldCustomerProvider" > 
    <providers > 
     <add connectionStringName="ConnString" name="GoldCustomerProvider" type="Assembly.GoldCustomerMembershipProvider" ...="" /> 
    </providers> 
    </membership> 
</system.web> 
</location> 
<system.web> 
    <compilation debug="true" /> 
    <authentication mode="Forms" /> 
</system.web> 
</configuration> 

它是使用註冊爲allowDefinition =」的節是錯誤MachineToApplication「超越應用程序級別。此錯誤可能是由於虛擬目錄未被配置爲IIS中的應用程序。

Line 11: <location path="Admin"> 
Line 12:  <system.web> 
Line 13:  <authentication mode="Forms"> 
Line 14:   <forms name="FormsAdmin" loginUrl="~/login.aspx" /> 
Line 15:  </authentication> 

看來,只有這樣才能實現我們嘗試的是一個自定義的HttpModule - 或改變我們的方法(如打破文件夾成不同的網絡應用程序在IIS)。這是正確的,還是我錯過了什麼?還是有其他的選擇我不知道?

感謝您的幫助!

+0

您只允許一個成員資格提供程序 - 它在應用程序初始化時被加載並緩存。每個供應商有什麼不同,你需要這樣做? – typemismatch 2009-05-04 18:14:12

回答

1

首先,我認爲基於角色的安全性對於您的應用程序非常有意義,因爲您可以控制數據庫。但是,如果你不能改變它,這是一個不行。

替代解決方案可以是網關登錄窗體,基於ReturnUrl查詢字符串變量將用戶重定向到文件夾特定的登錄表單,並且該表單將使用要驗證用戶的提供程序。然後它使用FormsAuthentication.RedirectFromLoginPage來設置驗證cookie並重定向到上一頁。您可以設置角色並使用基於角色的安全性來控制對web.config<authorization>標記的每個文件夾的訪問。

+0

我已經完成了他正在嘗試使用角色的許多時間 - 而且您是正確的 - 這正是角色的職責 - 授權在不同級別訪問。 – 2009-05-04 18:48:52

0

我不確定你想要做什麼,但是對於這些客戶類型中的每一種,角色如何?限制每個子文件夾的角色訪問權限,但仍有1個成員資格提供者和1個角色提供者。

相關問題