2011-05-10 82 views
5

我想使用MVC3自帶的相同ASP.NET成員資格提供程序數據庫運行兩個Web應用程序。因此兩個Web應用程序並排運行,並且它們都具有與同一成員數據庫相同的連接。現在的問題是,我只能登錄一個應用程序並自動註銷其他應用程序。但是,我想要的功能是,如果我登錄到其中一個,我會自動登錄到另一個。ASP.Net成員登錄問題

我想知道啓用此功能的技巧是什麼。

非常感謝

回答

4

如果您使用的是Forms Authentication,則會使用Cookie跟蹤用戶。默認情況下Cookie僅限於發送它們的應用程序。因此,其他應用程序無法看到第一個創建的身份驗證Cookie。因此,舉例來說,如果你有分別foo.example.com舉辦了兩屆的應用程序和bar.example.com你可以在這兩個應用程序的web.config設置cookie的domain屬性example.com

<forms 
    loginUrl="/login/index.mcp" 
    requireSSL="true" 
    protection="All" 
    timeout="120" 
    domain="example.com" 
/> 

這樣的cookie將那兩個應用程序之間共享並且您將能夠實現單點登錄。

+0

那麼,我測試了它,它並沒有在我的機器上工作。我所做的就是在我的IIS網站「lwww.domain.com」中創建一個網站,然後將一個應用程序部署到根目錄中,另一個應用程序部署到根目錄下的單獨Web應用程序中。他們使用不同的應用程序池。我登錄到根目錄,但沒有得到自動登錄到孩子....任何幫助表示讚賞。 – Frank 2011-05-11 01:00:12

+0

@ user299230,你在web.config中設置了'domain'屬性爲什麼?當您使用FireBug或Fiddler進行檢查時,您是否看到將身份驗證cookie發送到第二個應用程序?也可以嘗試設置兩個應用程序中的sama機器密鑰:http://msdn.microsoft.com/en-us/library/ff649308.aspx – 2011-05-11 05:19:50

0

Finanlly我修好了。 我的應用程序在同一個域下運行,因此域不是問題(但非常感謝Darin)。 問題是: IIS默認爲不同的Web應用程序生成不同的機器密鑰。所以我必須在web.config中明確指定相同的機器密鑰〜!

+0

給Darin試圖幫助你的要點! – Jeremy 2011-05-11 04:24:18