2015-04-29 42 views
1

我已經看過這個MSDN文章:https://msdn.microsoft.com/en-us/library/eb0zx8fc.aspx和這個堆棧溢出問題:Cookies with and without the Domain Specified (browser inconsistency)(相當冗長,但提到了aspnet cookie auth的一些障礙)。如何手動使aspnet的表單身份驗證Cookie失效?

在MSDN文章中,如果只有一個應用程序存在,它可以省略域。但是,我們已經有多個應用程序在生產中被省略。現在我們已經推出了一個指定域名爲.some.web.com的新配置,但我們遇到了問題,因爲有些客戶端仍然有舊的cookie,它會將域名默認爲child.some.web.com,並優先於具有較少特定域的新cookie。

我一直試圖通過發送以下標題手動過期cookie:Set-Cookie: .ASPXAUTH=x; expires=Mon, 04 May 2015 21:12:38 GMT; domain=child.some.web.com; path=/但瀏覽器繼續拒絕它。對於普通的cookies,當瀏覽器收到它時,他們會預先輸入.,但是對於ASPX表單驗證cookie,這似乎並不是這種情況,我猜這與問題有關。

有什麼辦法可以使舊的cookie失效嗎?

回答

0

答案:沒有在過期的cookie中傳遞域名似乎有伎倆。 例子:

[RoutePrefix("api/cookie")] 
public class CleanCookieController : ApiController 
{ 
    [Route("clean")] 
    [HttpGet] 
    public HttpResponseMessage Get(HttpRequestMessage request) 
    { 
     var r = new HttpResponseMessage(HttpStatusCode.OK); 
     var cookie = new CookieHeaderValue("STAGING.ASPXFORMSAUTH", "x"); 
     cookie.Expires = DateTimeOffset.Now.AddDays(-5); 
     cookie.HttpOnly = true; 
     cookie.Path = "/"; 
     r.Headers.AddCookies(new CookieHeaderValue[] { cookie }); 
     return r; 
    } 
} 

我猜不知何故提供域名弄亂設置cookie時的域名並沒有在.前綴?

編輯:如果有人有更準確的答案,可以支持我的「修復」與更多的信息,這將是超級。