7

私が働いているウェブサイトは、いくつかのプロジェクト (複数の言語で書かれています) で構成されています。現在、クエリ文字列とセッション変数で厄介なコードを使用して、プロジェクトからプロジェクトに移動するときにログイン状態を維持する必要があります。Cookie はドメイン固有であるため、ある言語を使用して 1 つのプロジェクトで設定でき、別の言語を使用して (同じドメインの) 別のプロジェクトからアクセスできるため、Cookie に変換しようとしています。

ただし、Cookie の値を変更して削除する際に問題が発生しています。もっと具体的に言うと、クッキー スティックに変更を加えるのに問題があります。

たとえば、私のログアウトコードでは:

if (Request.Cookies["thisuserlogin"] != null)
{
    HttpCookie myCookie = new HttpCookie("thisuserlogin");
    myCookie.Value = String.Empty;
    myCookie.Expires = DateTime.Now.AddDays(-1d);
    Response.Cookies.Add(myCookie);
    Response.Cookies.Set(myCookie);
    litTest.Text = myCookie.Expires.ToString() + "<br />" + Request.Cookies["thisuserlogin"].Expires.ToString();
}

1 行が昨日で、次の行が 1/1/0001 12:00:00 になっていますが、それらは同じ Cookie である必要があります。では、Cookie が設定されているのに値が変わらないのはなぜでしょうか? ユーザーのコンピューターに強制的に Cookie の値を更新させる方法 (削除を含む) はありますか?

どうもありがとうございました。PS Cookie のわかりやすい入門書を提供するために提供できる任意の URL をいただければ幸いです。

4

2 に答える 2

1

http://msdn.microsoft.com/en-us/library/ms178194(v=vs.100).aspx

if (Request.Cookies["thisuserlogin"] != null)
{
    HttpCookie byeCookie = new HttpCookie("thisuserlogin");
    byeCookie.Expires = DateTime.Now.AddDays(-1);
    Response.Cookies.Add(byeCookie);

    // Update Client
    Response.Redirect(Request.RawUrl);
}
于 2012-09-04T19:14:29.323 に答える
0

クライアント側でFiddlerなどのツールを使用して、やり取りされるすべてのデータをキャプチャする必要があります。これは、Cookie に過去の日付を設定する必要があることを確認するのに役立ちます (また、次のリクエストから欠落しています)。

テキストボックスの出力については、作成した Cookie の有効期限と、それを持たないリクエストCookie の有効期限をリストしています。代わりに応答 Cookie を見ると、日付が設定されていることがわかります。また、への呼び出しResponse.Cookies.Setは不要です。Response.Cookies.Addあなたが必要とするすべてであるべきです。

于 2012-09-04T19:06:23.750 に答える