0

ASP.NET を使用して C# のセッションからユーザーをログアウトする方法を知りたいです。ログイン時のユーザー名を取得するために SQL Server を使用しています (下のコードの 2 番目のブロック)。

protected void btnLogin_Click(object sender, EventArgs e)
{
        string email = txtEmail.Text;
        string password = txtPassword.Text;//AQUIRE EMAIL AND PASSWORD AND ADD TO STRINGS

        SqlDataReader dataread = null;

        SQLconn.Open();
        SqlCommand chkLogin = new SqlCommand("SELECT * FROM Member WHERE Email='" + email + "' AND Password='" + password + "'", SQLconn);
        dataread = chkLogin.ExecuteReader();
        SqlCommand nameAdd = new SqlCommand("SELECT Name FROM Member WHERE Email='" + email + "'", SQLconn);

        if (dataread.Read())
        {
            Response.Write("You are logged in");

            Session.Add("userID", dataread[0].ToString());
            Session.Add("userFName", dataread[1].ToString());
            Session.Add("userEmail", dataread[3].ToString());

            Response.Redirect("~/Profiles.aspx");
        }
        else
        {
            Response.Write("Please try again. Usernames and Passwords do not match.");
        }
        SQLconn.Close();
    } 

ログインすると、別のページにリダイレクトされます。これがそのページのコードビハインドです

if (Session.Count > 0)
{
    if (Session.Count > 0)
    {
                string name = (string)Session["userFName"];
                txtGreeting.Visible = true;
                txtGreeting.Text = "Welcome " + name + " , you are logged in! ";
    }
}
4

2 に答える 2

-1

ログイン/ログアウトにセッションを使用する方法は正しくありませんが、ログアウトをクリックしたときにユーザーを削除しようとしている場合は、次のようにします。

Session["userFName"] = null; //the other session vars related to user as well

提案: 最小限のフォーム認証またはトークン認証を検討してください。セッションがハイジャックされる可能性があり、アプリケーションを開いて攻撃しています。

于 2015-07-17T16:02:59.363 に答える