先仔細閱讀這段內容:ASP.NET 支持在分布式環境中(跨單個服務器上的多個應用程序或在網絡場中)進行 Forms 身份驗證。
之前研究過多站點間的Session共享的問題,這裡說下跨應用程序進行 Forms 身份驗證詳細實現方式,此方案的基礎就是“跨應用程序進行 Forms 身份驗證”(幫助可點擊鏈接或是自己直接查找MSDN)。
在VS2005中建立兩個Web應用程度的項目,兩個項目都添加一個Default.aspx頁面,其中一個項目增加Login.aspx頁面,實現“Forms 身份驗證”。
在兩個項目的Default.aspx.cs代碼頁面添加如下代碼:view plaincopy to clipboardprint?
Response.Write(User.Identity.Name); //輸出當前Form認證後登錄的用戶名
Response.Write(User.Identity.Name); //輸出當前Form認證後登錄的用戶名假設兩個項目的訪問地址如下:
A項目:http://localhost/test/
B項目(帶登錄):http://localhost:81/
從上地址可以看出兩個項目處於不同的域名下,即兩個項目處於兩個不同的Web站點
設置A項目的web.configview plaincopy to clipboardprint?
<authentication mode="Forms"> <!-- 這裡loginUrl是指向B項目的登錄頁面 注意:name、protection、path、validationKey、validation、decryptionKey 和 decryption 屬性必須在所有應用程序中都完全相同 --> <forms loginUrl="http:localhost:81/Login.aspx" path="/" protection="All" defaultUrl="http:localhost:81/Default.aspx" timeout="40" name=".DeESoft"> </forms> </authentication> <machineKey validationKey="C50B3C89CB21F4F1422FF158A5B42D0E8DB8CB5CDA1742572A487D9401E3400267682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE" decryptionKey="8A9BE8FD67AF6979E7D20198CFEA50DD3D3799C77AF2B72F" validation="SHA1" /> <authorization> <deny users="?" /> </authorization> <authentication mode="Forms"> <!-- 這裡loginUrl是指向B項目的登錄頁面 注意:name、protection、path、validationKey、validation、decryptionKey 和 decryption 屬性必須在所有應用程序中都完全相同 --> <forms loginUrl="http:localhost:81/Login.aspx" path="/" protection="All" defaultUrl="http:localhost:81/Default.aspx" timeout="40" name=".DeESoft"> </forms> </authentication> <machineKey validationKey="C50B3C89CB21F4F1422FF158A5B42D0E8DB8CB5CDA1742572A487D9401E3400267682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE" decryptionKey="8A9BE8FD67AF6979E7D20198CFEA50DD3D3799C77AF2B72F" validation="SHA1" /> <authorization> <deny users="?" /> </authorization>