0

我正在使用 C# 中的以下 SQL 查询从表 ts_dept 中检索 dept 的值 - 我将如何将其分配给Session["UserAuthentication"]when (CurrentName != null)

   protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
    {
        string username = Login_Box.UserName;
        string pwd = Login_Box.Password;

        string strConn;
        strConn = WebConfigurationManager.ConnectionStrings["team13ConnectionString"].ConnectionString;
        SqlConnection Conn = new SqlConnection(strConn);
        Conn.Open();

        string sqlUserName;
        sqlUserName = "SELECT dept FROM ts_dept WHERE id=@username AND pass=@pwd";

        SqlCommand com = new SqlCommand(sqlUserName, Conn);
        com.Parameters.Add("@username", username);
        com.Parameters.Add("@pwd", pwd);

        string CurrentName;
        CurrentName = (string)com.ExecuteScalar();

        if (CurrentName != null)
        {
            Session["UserAuthentication"] = username;
            Session.Timeout = 1;
            Response.Redirect("Default.aspx");
        }
        else
        {
            Session["UserAuthentication"] = "";
        }
    }
4

1 回答 1

1

只是从这里的内存(不是在我的 C# 机器上),但试试这个:

object CurrentName = com.ExecuteScalar();
if (CurrentName != null && CurrentName != System.DBNull.Value) {
    {
        Session["UserAuthentication"] = (string)CurrentName;
        Session.Timeout = 1;
        Response.Redirect("Default.aspx");
    }
    else
    {
        Session["UserAuthentication"] = "";
    }
}

如果我没记错的话,如果查询没有返回结果,CurrentName 将为 null,如果查询返回结果但 ts_dept.dept 为 null,则为 System.DBNull.Value。

还要注意关于使用 Session 进行身份验证的评论——如果你在一个负载平衡的集群中,它根本就不起作用。开始将此切换到表单身份验证。

于 2013-03-23T18:07:58.503 回答