C# 在c中使用会话#

C# 在c中使用会话#,c#,sql,asp.net,C#,Sql,Asp.net,这是我使用C#中的会话进行登录的代码。我已经为此编写了业务逻辑和数据访问层,但我的代码没有按预期工作。即使数据库中没有记录,我也可以登录,它会重定向到error.aspx Default.aspx.cs public void LoginButton_Click(object sender, System.EventArgs e) { int id; if (LoginName.Text!=""&& Password.Text!="") {

这是我使用C#中的会话进行登录的代码。我已经为此编写了业务逻辑和数据访问层,但我的代码没有按预期工作。即使数据库中没有记录,我也可以登录,它会重定向到
error.aspx

Default.aspx.cs

public void LoginButton_Click(object sender, System.EventArgs e)
{
    int id;

    if (LoginName.Text!=""&& Password.Text!="")
    {
        try
        {
            sessionVars = BL_Authenticate.AuthenticateUser(sessionVars, LoginName.Text, Password.Text);

            Response.Redirect("home.aspx");
        }
        catch (Exception ex)
        {
            Session["Exception"] = ex.Message.ToString();
            Response.Redirect("error.aspx");
        }

        //else
        //{
        //    Response.Redirect("error.aspx");

        //}
        if (sessionVars.Tables[0].Rows.Count >= 1)
        {
            try
            {
                Session["User"] = (string)sessionVars.Tables[0].Rows[0]["FirstName"];
                Session["User"] += (string)" ";
                Session["User"] += (string)sessionVars.Tables[0].Rows[0]["LastName"];
            }
            catch (Exception ex)
            {
                Session["Exception"] = ex.Message.ToString();
                Response.Redirect("error.aspx");
            }
            id = (int)sessionVars.Tables[0].Rows[0][0];
            if (id >= 1)
            {
                try
                {
                    Session["Role"] = "Admin";
                    FormsAuthentication.Authenticate((string)sessionVars.Tables[0].Rows[0]["Login"], (string)sessionVars.Tables[0].Rows[0]["Password"]);
                }
                catch (Exception ex)
                {
                    Session["Exception"] = ex.Message.ToString();
                    Response.Redirect("error.aspx");
                }
                if (FormsAuthentication.GetRedirectUrl("Admin", false) == "/UserInterface/home.aspx")
                {
                    FormsAuthentication.RedirectFromLoginPage("admin", false);
                    Response.Redirect("home.aspx");
                }
                else
                    FormsAuthentication.RedirectFromLoginPage("admin", false);
            }
            else
            {
                Session["Role"] = "User";
                FormsAuthentication.RedirectFromLoginPage("user", false);
            }
        }
        else
        {
            errorMessage.Text = "Sorry, wrong username or password.";
        }
    }

}
}

BL_认证

public class BL_Authenticate
{
    public static DataSet AuthenticateUser(DataSet user, string login, string password)

    {
        return DAL_Authenticate.AuthenticateUser(user, login, password);
    }
}
public static DataSet AuthenticateUser(DataSet dataset, string login, string password)
{
    try
    {

        //Dispose all objects that have a .Dispose()

        SqlDataAdapter adapter = new SqlDataAdapter();
        conn = DAL_DataBaseConnection.GetConnection();
        SqlCommand cmd = new SqlCommand("authentication", conn);
        cmd.CommandType = CommandType.StoredProcedure;
        SqlParameter param = cmd.Parameters.Add("@Login", SqlDbType.VarChar, 255);
        param.Value = login;
        param = cmd.Parameters.Add("@Password", SqlDbType.VarChar, 255);
        param.Value = password;
        adapter.SelectCommand = cmd;
        adapter.Fill(dataset);
    }
    finally
    {
        conn.Close();
    }
    return dataset;
}
达卢

public class BL_Authenticate
{
    public static DataSet AuthenticateUser(DataSet user, string login, string password)

    {
        return DAL_Authenticate.AuthenticateUser(user, login, password);
    }
}
public static DataSet AuthenticateUser(DataSet dataset, string login, string password)
{
    try
    {

        //Dispose all objects that have a .Dispose()

        SqlDataAdapter adapter = new SqlDataAdapter();
        conn = DAL_DataBaseConnection.GetConnection();
        SqlCommand cmd = new SqlCommand("authentication", conn);
        cmd.CommandType = CommandType.StoredProcedure;
        SqlParameter param = cmd.Parameters.Add("@Login", SqlDbType.VarChar, 255);
        param.Value = login;
        param = cmd.Parameters.Add("@Password", SqlDbType.VarChar, 255);
        param.Value = password;
        adapter.SelectCommand = cmd;
        adapter.Fill(dataset);
    }
    finally
    {
        conn.Close();
    }
    return dataset;
}

我看到的一个正常现象是,如果登录失败,它会重定向到错误页面,因此那里没有错误,您确定您的登录在那一点上正常吗?

请至少发布将编译的代码。那里有一个
catch
块,没有匹配的
try
@DavidG抱歉:我在修改我的code@DavidG你现在能帮我吗?不要把密码存储在纯文本中,而是存储密码的盐散列。这就是我看到的逻辑,你的代码不一定接受登录,因为它重定向到错误页面,相反,如果登录成功,它就不会重定向到错误页面,但是主页。。。主页是登录工作时看到的页面!这是一个评论,不是一个回答。:)