0

私の会社は Web 開発の一部を下請けに出しており、彼らが作成した ASP.NET サイトには疑わしい機能が含まれています。サイトの一部は、ログインと「Remember Me」機能です。サイトにログインするときに「Remember Me」をチェックするオプションがあります。ログインしたら、ログアウトする唯一の方法は、ローカル キャッシュをクリアし、サイトによって作成されたすべての Cookie を削除することです。(ログアウトリンクがありますが、何もしません)。したがって、基本的には、一度ログインすると、一生ログインします。

私は、これは誤りであり、ユーザーによる明示的な「ログアウト」は常にユーザー セッションを強制終了し、キャッシュされたログイン情報をすべて削除する必要があることを伝えました。

私の質問はこれです: ログインの「Remember Me」機能の標準はありますか?

編集: だから、私の質問の詳細を繰り返します。ユーザーをどのようにログアウトするかは尋ねていません。ログアウトするときにユーザーのセッションとすべての Cookie を強制終了することは、私には完全に理にかなっています。

私の質問は、ユーザーが [ログアウト] ボタンをクリックしても何もしないシナリオがあるということです。つまり、ユーザーがログインして [Remember Me] ボタンをオンにした場合、ユーザーは永久にログインし、ユーザーのキャッシュをクリアする以外にログアウトする方法はありませんか? これは私には非常に奇妙に思えますが、私たちが雇った請負業者は、朝に太陽が昇るのと同じくらい普通のことのようです.

4

1 に答える 1

2

OpenId と MVC で同様の問題が発生したため、次のスニペットを見つけました。

   public ActionResult LogOff()
        {
            FormsAuthentication.SignOut();
            Session.Abandon();

            HttpCookie cookie1 = new HttpCookie(FormsAuthentication.FormsCookieName, "");
            cookie1.Expires = DateTime.Now.AddYears(-1);
            Response.Cookies.Add(cookie1);

            HttpCookie cookie2 = new HttpCookie("ASP.NET_SessionId", "");
            cookie2.Expires = DateTime.Now.AddYears(-1);
            Response.Cookies.Add(cookie2);

            return RedirectToAction("Index", "Home");
        }

これにより、セッションと Cookie が FormsAuthentication によって永続的にマークされていてもクリアされます。これは、Remember がチェックされているときに発生すると思います。

アップデート:

メンバーミー機能は、セッションタイムアウトを取得せず、一定期間後に自動サインアウトしないようにするためのものです。サインアウトは、実際にはユーザーをログアウトする必要があります。

于 2012-07-03T13:07:27.947 に答える