2013-03-25 61 views
4

我在Azure網站上有兩個網站,我使用CNAME將它們與我自己的域名一起使用。Azure網站 - 跨子域共享登錄狀態

我們調用兩個站點site1.example.com和site2.example.com。

我正在使用ASP.NET MVC 4和SimpleMembership。我希望用戶能夠在site1.example.com上登錄,並且登錄狀態將被site2.example.com接受。

這是我到目前爲止已經完成:

  • 雙方1和Site2在相同的會員數據庫(連接字符串設定相同的兩個在web.config中,並InitializeSimpleMembershipAttribute集看那個指點連接字符串)
  • 我已經將Cookie域設置爲.example.com(在web.config中,system.web身份驗證部分)
  • 我已手動將systemKey中的machineKey設置爲system.web的配置兩個網站

但是,如果我在site1上登錄,那麼我沒有在site2上登錄。我可以看到.ASPXAUTH cookie在.example.com上正確設置,因此它們都可見。

那麼,我錯過了什麼?

+1

您很可能錯過了這兩個網站的常見'session'商店。坦率地說,我認爲在「內部IIS」與「Azure網站」中實現目標沒有任何區別。首先嚐試在本地實現您的目標,然後詢問Azure具體的事情,如果有的話。你用本地IIS實現了你的目標嗎? – astaykov 2013-03-25 18:49:53

+0

你能告訴我們更多關於這些網站的問題嗎?他們都是* MVC 4,*都是針對.NET 4等嗎? – Levi 2013-03-26 05:45:56

+0

@Levi,.NET 4.5和MVC 4. – 2013-03-26 09:07:55

回答

0

如果您正在使用AJAX請求登錄(通過Web API等),儘量包括

xhrFields: { withCredentials: true } 

$.ajax({ method: 'POST', 
     url: 'yourloginurl.com/api/login', 
     xhrFields: { withCredentials: true }, 
     success: function (data) { ... } }); 

設置的HttpCookie域之後。

我花了一天的時間來找到這個解決方案,這解決了我的問題。