2017-07-28 60 views
1

所以我一直在這個工作了很長一段時間,似乎無法找到一個有用的答案。我正在創建一個包含刷新標記字符串的cookie。添加後,我可以在我的Request.Cookies中看到它被添加,但它並未顯示在開發者控制檯中,我的程序似乎無法找到它。我添加一個cookie,我看到它添加,然後它不再有那

這裏是我的創作和添加是,當他們成功驗證RAN:

Response.Cookies.Remove("RefreshToken"); 
FormsAuthenticationTicket tick = new FormsAuthenticationTicket(1, 
    response.AppUser.Username, 
    DateTime.Now, 
    DateTime.Now.AddSeconds(response.AppUser.ExpiresIn), 
    true, 
    response.AppUser.AccessToken); 

string encrypt = FormsAuthentication.Encrypt(tick); 

HttpCookie cookie = new HttpCookie("RefreshToken", encrypt); 
cookie.Value = response.AppUser.RefreshToken; 
cookie["RemembeMe"] = rememberMe.ToString(); 
cookie.Secure = true; 
cookie.Name = "RefreshToken"; 
cookie.Path = Request.ApplicationPath; 
cookie.Expires = DateTime.Now.AddMinutes(15); 
Response.Cookies.Add(cookie); 

下面是我檢索它在Global.asax時,我的身份驗證令牌在請求開始時屆滿:

if (HttpContext.Current.Request.Cookies["RefreshToken"] != null) 
{ 
    var z = HttpContext.Current.Request.Cookies["RefreshToken"].Value; 
    Resources.ReauthorizeUser rau = new Resources.ReauthorizeUser();  
} 

下面是一些我的web.config中:

<sessionState cookieless="false" regenerateExpiredSessionId="false"/> 
<customErrors mode="Off"/> 
<authentication mode="Forms"> 
    <forms loginUrl="~/Account/Login" timeout="5" protection="All" cookieless="UseCookies" slidingExpiration="false"/> 
</authentication> 

設我知道如果我錯過了任何重要的代碼。任何幫助都會令人驚歎,這一直在推動着我的堅強。

+1

在請求管道中的哪個點執行添加cookie的代碼?有沒有其他代碼可以設置該cookie或覆蓋它?您在瀏覽器的開發控制檯中看到了哪些cookie?請求管道中的哪一點是您檢索cookie? – Igor

+0

啊,我知道我會忽略一些重要的信息。好問題,我會在上面更新。哦,我沒有回答有關開發控制檯,它從來沒有出現在那裏。 – Darkwingduck

+1

看起來像是將cookie值設置爲字符串encrypt(在HttpCookie構造函數中),但是將值覆蓋爲response.AppUser.RefreshToken。 –

回答

2

只有通過SSL提出請求時纔會發送您的Cookie。 如果您不使用SSL,請嘗試使用cookie.Secure = false;

+0

嗯所以是的我猜本地它不會是SSL? – Darkwingduck

+2

除非你專門設定了這一點,否則我不這麼認爲。 –

+0

好吧,謝謝,我會盡快嘗試 – Darkwingduck

相關問題