Asp.net
將一個 Asp.net Membership 數據庫與多個應用程序一起使用
我在一台 IIS 伺服器上有兩個 asp.net 應用程序,我想使用相同的後端 asp_security 數據庫和成員資格提供程序。我已經讀過我所要做的就是在兩個 Web 配置中引用相同的應用程序名稱,就像我現在正在做的那樣,但我一定做錯了什麼
在每個應用程序 web.config 中我都有這個部分。
<membership> <providers> <clear/> <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="membership" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" applicationName="/" requiresUniqueEmail="false" minRequiredPasswordLength="5" minRequiredNonalphanumericCharacters="0" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" passwordAttemptWindow="10" passwordStrengthRegularExpression="" /> </providers> </membership>當我從應用程序 A 登錄並瀏覽到應用程序 B 時,應用程序 B 似乎對我或應用程序 A 的憑據一無所知。有人知道我做錯了什麼嗎?
只是為了結束,我將回答我是如何實現我最初的問題所要求的目標的。
我在一台 IIS 伺服器上有兩個 asp.net 應用程序。我的目標是當使用者登錄到 app1 時,他們的使用者憑據將在 app2 中可用。配置 asp.net 成員資格提供程序只是我正在尋找的一個步驟。即使兩個應用程序都使用相同的後端數據庫和提供程序,當我點擊 app2 時,我仍然無法通過身份驗證。我一直在尋找的是單點登錄解決方案。
一旦您將兩個應用程序都指向您的 asp_membership 數據庫,請將以下內容放在您的 web 配置的 system.web 部分
<authentication mode="Forms" /> <membership> <providers> <clear/> <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="membership" applicationName="/" /> </providers> </membership> <roleManager enabled="true" />確保兩者都具有相同的 applicationname 屬性集。
我使用的是 IIS 6,因此我將其配置為為兩個應用程序自動生成機器密鑰。因為這兩個應用程序都存在於同一台機器上,所以密鑰是相同的,這是使 SSO 工作的關鍵部分。設置 IIS 後,將以下內容添加到我的 web.config
<machineKey decryptionKey="AutoGenerate" validation="SHA1" validationKey="AutoGenerate" />這就是它的全部。完成後,我可以登錄 app1,然後瀏覽到 app2 並保留我的安全憑證。
感謝您朝著正確的方向推動。