1

ユーザーがログアウトをクリックしたときに呼び出されるlogout.aspxがあり、Cookieを削除したい場所がありますが、それはできません...

public partial class LogoutUser : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        HttpCookie cookie;

        cookie = Request.Cookies.Get("Basket");
        if (cookie == null)
        {
            cookie = new HttpCookie("Basket");
        }

        foreach (string item in cookie.Values.AllKeys)
        {
            Response.Cookies[item].Expires = DateTime.Now.AddDays(-1);                
        }

        cookie.Expires = DateTime.Now.AddDays(-1d);
        Response.Cookies["Basket"].Expires = DateTime.Now.AddYears(-1);    
        Session.Abandon();   

        Response.Redirect("~/Default.aspx");
    }
}

Cookie は値をバスケットに保存しますが、ログアウトした後もバスケットにアクセスできます。何が問題なのかわかりません。

4

2 に答える 2

5

ここにいくつかの関連ドキュメントがあります

あなたの間違いは次の行にあると思います:

if (cookie == null)

null でないことをチェックするのではなく、null をチェックしています。したがって、

HttpCookie cookie;

    cookie = Request.Cookies.Get("Basket");
    if (cookie != null)
    {
        cookie = new HttpCookie("Basket");
        cookie.Expires = DateTime.Now.AddDays(-1);
        Response.Cookies.Add(cookie);
    }

    Response.Redirect("~/Default.aspx");

トリックを行う必要があります。

これが役に立てば幸いです。

于 2012-04-10T20:53:34.473 に答える
1

これでしょうか?

放棄または期限切れのセッションのセッション識別子は、デフォルトでリサイクルされます。つまり、期限切れまたは放棄されたセッションのセッションIDを含む要求が行われた場合、同じセッションIDを使用して新しいセッションが開始されます。これを無効にするには、sessionState構成要素のregenerateExpiredSessionId属性をtrueに設定します。詳細については、「セッション識別子」を参照してください。

http://msdn.microsoft.com/en-us/library/system.web.sessionstate.httpsessionstate.abandon.aspx

于 2012-04-10T20:30:39.813 に答える