3

所以我有一個網站坐在URL「mysite.com」和另一個網站「subdomain.mysite.com」。用戶帳戶存儲在「mysite.com」中,所以當我需要登錄到「subdomain.mysite.com」時,我將用戶帶到「mysite.com」,他們輸入他們的憑據正常進行身份驗證並確保身份驗證Cookie是在「subdomain.mysite.com」可通過如下在cookie設置domainASP.NET MVC 4跨子域身份驗證。不能退出

HttpCookie cookie = FormsAuthentication.GetAuthCookie(username, true); 
cookie.Domain = ".mysite.com"; 
Response.Cookies.Add(cookie); 

然後我重定向他們回到「subdomain.mysite.com」和用戶值得慶幸的是有身份驗證。

除註銷外,一切正常。當用戶試圖從任何網站註銷,我刪除預期的身份驗證cookie:

FormsAuthentication.SignOut(); 

但由於某些原因,cookie不會被刪除,用戶停留登錄

我曾嘗試直接使用Request.Cookies[FormsAuthentication.FormsCookieName]刪除cookie,但仍然沒有。由於某種原因,Chrome瀏覽器非常緊張:我可以在Chrome的開發人員工具中看到它。

我在做什麼錯?幫幫我!

回答

6

好的,找到了解決問題的辦法。

HttpCookie cookie = Request.Cookies[FormsAuthentication.FormsCookieName]; 
cookie.Domain = ".mysite.com"; 
cookie.Expires = DateTime.Now.AddMilliseconds(-1); 
Response.Cookies.Add(cookie); 

正如你可以看到,兩件事情發生在這裏:
- 我再次明確設置域,我處理的cookie。顯然你必須告訴瀏覽器域的上下文,否則它根本找不到cookie。
- 而不是刪除cookie,我只是過期。

+0

有一個解決方案只使用web.config配置正確嗎? – andrea