1

loginStatusコントロールを使用して、ユーザーがログアウトできるようにしています。ログアウトプロセス(セッションの削除、Cookieの削除、ユーザーのリダイレクトはありません)のコードをこれ以上記述せず、コントロールの組み込みコードに依存します。

ここで、LoginStatusコントロールをページに配置し、残りを自分で実行するだけで十分かどうか(つまり、セッションCookieを削除してユーザーをサインアウトすることを意味します)、またはそのイベントを処理して、Cookieを削除してユーザーをログアウトするコードを作成する必要があります。

LoginStatusコントロールでユーザーをログアウトした後でも、セッションCookieを削除して、他のユーザーがそれを取得して使用しないようにする(ハイジャックする)か、IPや...などの文字列をコンテンツに追加してハイジャックを回避する必要があることを読みました...それは本当ですか?

4

2 に答える 2

3

次のようなものを試してください。

FormsAuthentication.SignOut();
Session.Abandon();

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

その後

FormsAuthentication.RedirectToLoginPage();
于 2012-05-01T08:53:03.567 に答える
2

コントロールはLoginStatusFormsAuthチケットをサインアウトするだけで、現在のセッションを明確に放棄することはありません。FormsAuthチケット(Cookieとして保存される)は、ユーザーがログインしているかどうか、および誰が実際にログインしているかを決定するものであることに注意することが重要です。ASP.NETセッションは行いません(フォームの認証ステータスに加えてASP.NETセッションを追加でチェックするカスタムコードがない場合)。

したがって、チケットをサインアウトするだけでよい場合は、問題ありません。ただし、アプリケーションがASP.NETセッションに情報を格納し、それもスローする必要があるLoggedOut場合は、ページのコードビハインドのイベントにイベントハンドラーを追加し、Session.Abandon(または適切と思われるもの)を呼び出す必要があります。

于 2012-05-01T08:50:16.867 に答える