3

Web アプリケーションでユーザーのログインとログアウトにカスタム コードを使用しています。ログインボタンをクリックすると、以下のコードが実行されます。

if (Membership.ValidateUser(txtUserEmail.Text, txtUserPass.Text))
{
    HttpContext.Current.Profile.Initialize(txtUserEmail.Text.Trim(), true);
}

次に、すべてのページの初期化前に profile.Username をチェックして、ユーザーがログインしているかどうかを確認します。しかし、プロファイルが null などに設定されるように、ユーザーをログアウトする方法がわかりません。ログアウトボタンのクリックでこれらすべてを試しています:

protected void lnkBtnLogout_Click(object sender, EventArgs e)
{
Session.Abandon();
Request.Cookies.Clear();
FormsAuthentication.SignOut();
var p = HttpContext.Current.Profile;
Response.Redirect("/Default.aspx");
}

プロファイルがリセットされたかどうかを確認するためだけに変数 p を使用していますが、ログインしているユーザーのすべての値が残っています。それで、プロファイルをリセットしてユーザーをログアウトするにはどうすればよいですか???

4

1 に答える 1

2

SignOut() の直後に、他のものを停止してリダイレクトを作成するため、ページは他のものを更新しません。

というわけでコードになります。

protected void lnkBtnLogout_Click(object sender, EventArgs e)
{
  Session.Abandon();
  Request.Cookies.Clear();
  FormsAuthentication.SignOut();
  Response.Redirect("/Default.aspx", true);
}

リダイレクト後、使用がまだログインしているかどうかを確認します。ユーザーは SignOut の呼び出し後にログアウトされませんが、最後の Cookie の終了とフラッシュの後、次のページの読み込み時にログアウトされます。

于 2012-03-08T21:53:44.033 に答える