3

カスタムコードを使用して、Webアプリケーションでユーザーをログインしてログアウトしています。 ログインボタンをクリックするだけで、次のコードは実行されます。asp.netアプリケーションからユーザーをログアウトする方法は?

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

私は、ユーザーがログインしているかどうかをチェックするためにeverypageの前initの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を使用していますが、それはまだのすべての値を持っていますログインしたユーザーでは、プロファイルをリセットしてユーザーをログアウトするにはどうすればよいですか?

+1

*リダイレクト後に確認しましたか? – Paul

+0

はい、すべてのプロフィールの値はそのまま、つまり現在のユーザーの詳細で設定されています。 – MrClan

+0

「if(!IsPostBack)」を追加して試してみることはできますか? –

答えて

2

SignOut()の直後に何か他のものを停止してリダイレクトすると、ページの更新がそれ以外のものになります。

コードは次のようになります。リダイレクトチェックした後

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

使用がログインまだある場合。ユーザーはサインアウトのコールの後、最終的なクッキーの終わりとフラッシュの後、次のページのロード時にログアウトではありません。

+0

は、このコードでも同じ結果になりません。ユーザーはdefault.aspxページにリダイレクトされますが、彼はログアウトせず、プロファイルオブジェクトにはまだ値が設定されています。そのため、he/someone-elseが逆方向にナビゲートしてアプリケーションを使用しようとすると、通常はそうするべきです)アプリケーションの場合、ユーザーはまだログインしています。 – MrClan

+0

@PratikChandraページをキャッシュしているかどうか確認してください! – Aristos

+0

かなり確かに、何もキャッシュされていません!!! – MrClan

関連する問題