0

System.Web.UI.PageoPageMyCookieが削除されていません。いくつかの記事を見てみましたが、ボタンをクリックするだけでVisual Studioをステップスルーする(またはローカルホストで実行する)と、Cookieが残ります。

価値があるものは何でも、私は.Net4.0でVisualStudio2012を使用しています。デフォルトのIE(すべての最新の更新を含むWin7 / 64のv9)を使用してローカルホストでデバッグしています。

public static void LoginUser(String strEmail, int iId, int iKeepDays)
{
    HttpCookie oCookie = new HttpCookie("myCookie");

    // Set the cookie value.
    oCookie.Secure = false;
    oCookie["Id"] = iId.ToString();
    oCookie["Email"] = strEmail;
    oCookie.Expires = DateTime.Now.AddDays(iKeepDays);

    // Add the cookie.
    HttpContext.Current.Response.Cookies.Add(oCookie);
}

public static void LogoutUser(System.Web.UI.Page oPage)
{
    // Get the cookie.
    HttpCookie oCookie = new HttpCookie("myCookie");
    oCookie = HttpContext.Current.Request.Cookies["myCookie"];
    if (null != oCookie)
    {
        // Remove the cookie.
        cCookies.RemoveCookie("myCookie");

        // Go back to the home page.
        if (oPage.IsCallback)
            ASPxWebControl.RedirectOnCallback("/");
        else
            HttpContext.Current.Response.Redirect("/");
    }
}

/// <summary>
/// This function will be used to remove cookies value 
/// </summary>
/// <param name="key"></param>
public static void RemoveCookie(String key)
{
    //get cookies value 
    HttpCookie oCookie = null;

    if (null != HttpContext.Current.Request.Cookies[key])
    {
        oCookie = HttpContext.Current.Request.Cookies[key];

        // You cannt directly delte cookie you should set its expiry date to earlier date 
        oCookie.Expires = DateTime.Now.AddDays(-1);
        HttpContext.Current.Response.Cookies.Add(oCookie);
    }
}
4

2 に答える 2

1

私がそれを書いて理解した今、答えは明白に思えますが、答えは明白かどうかにかかわらず、それほど簡単に得られるものではなかったと言えます。

上記のコードはサーバー上で実行されますが、Cookie の削除はクライアント上で行われます。Cookie が削除されたことをサーバーが認識できるように、実行はクライアントに転送されてからサーバーに戻される必要があります。

同じログアウト呼び出し内で、別の関数でデータを読み戻していました。Cookie をリセットするという慣行が受け入れられているため、関数は Cookie を書き戻しました。Cookie が削除され、その後戻ってきました。新しいファイル名も取得しました。(隠しクッキーフォルダを開けました。)

私の解決策は、ログイン状態を他の関数に渡すことでした。それはクッキーの部分を解決しました。

于 2013-01-14T21:56:26.137 に答える
0

行はメソッドcCookies.RemoveCookie("myCookie");を呼び出しません。RemoveCookie行はRemoveCookie("myCookie");代わりにする必要があります。

于 2013-01-14T21:18:43.957 に答える