我們正在嘗試在我們的站點上實現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)。這是正確的,還是我錯過了什麼?還是有其他的選擇我不知道?
感謝您的幫助!
您只允許一個成員資格提供程序 - 它在應用程序初始化時被加載並緩存。每個供應商有什麼不同,你需要這樣做? – typemismatch 2009-05-04 18:14:12