在用戶會話結束時(顯示彈出窗口時)是否可以在服務器端設置httpcookie到期。
我已經提取了一些代碼從微軟的防僞標記的實現。
internal static string GetAntiForgeryTokenName(string appPath)
{
if (string.IsNullOrEmpty(appPath))
{
return "__RequestVerificationToken";
}
return "__RequestVerificationToken_" + Base64EncodeForCookieName(appPath);
}
private static string Base64EncodeForCookieName(string s)
{
byte[] bytes = Encoding.UTF8.GetBytes(s);
string text = Convert.ToBase64String(bytes);
return text.Replace('+', '.').Replace('/', '-').Replace('=', '_');
}
下面的代碼在服務器端設置cookie。
string antiForgeryTokenName = GetAntiForgeryTokenName(HttpContext.Request.ApplicationPath);
HttpCookie httpCookie = HttpContext.Request.Cookies[antiForgeryTokenName];
HttpCookie httpCookie2 = new HttpCookie(antiForgeryTokenName, httpCookie.Value)
{
HttpOnly = true
//// your domain Domain = ,
//// path Path = ,
//// set path Expires =
};
HttpContext.Response.Cookies.Set(httpCookie2);
請注意,我沒有測試過這個代碼,只是試一試,如果你沒有任何其他選項。
你可以使用jQuery和$ .cookie( 「RequestVerificationToken_Lw」,1,{到期:10});這將在1天內過期cookie(您可以自定義到不同的時間範圍) –
感謝@DarrenDavies的回覆。但這些cookies很安全,不能使用javascript訪問。 – w3dev