C# 在asp.net c中使用会话验证登录级别#
我有一个使用asp.net c#创建的简单登录页面。我试图做的是检索用户级别并将其分配给会话,然后根据该级别重定向到相应的页面。但是当我登录时,什么也没发生。。下面是我的代码。有人能告诉我我的代码有什么问题吗C# 在asp.net c中使用会话验证登录级别#,c#,asp.net,C#,Asp.net,我有一个使用asp.net c#创建的简单登录页面。我试图做的是检索用户级别并将其分配给会话,然后根据该级别重定向到相应的页面。但是当我登录时,什么也没发生。。下面是我的代码。有人能告诉我我的代码有什么问题吗 con.Open(); com.CommandText = "Select * from deatls Where c_id = '" + TextBox1.Text + "' and password = '" + TextBox2.Text + "'";
con.Open();
com.CommandText = "Select * from deatls Where c_id = '" + TextBox1.Text + "' and password = '" + TextBox2.Text + "'";
com.CommandType = CommandType.Text;
com.Connection = con;
SqlDataReader sqlread = com.ExecuteReader();
if (sqlread.Read())
{
Session["level"] = sqlread["level"];
}
if ((int)Session["level"] == '1')
Response.Redirect("customer_menu.aspx");
if ((int)Session["level"] == '2' )
Response.Redirect("front.aspx");
if ((int)Session["level"] == '3')
Response.Redirect("manager.aspx");
else
Response.Redirect("login.aspx");
con.Close();
首先,您要将
会话[“level”]
强制转换为int
,然后检查与字符串的相等性(或尝试)。其次,要检查的值使用单引号。此代码是否编译?您是否有异常处理功能?我的猜测是,它会出错,根本不会运行。你能发布完整的代码吗
他们是对的。您应该首先尝试从要检查的整数值中删除单引号。首先,您要将会话[“level”]
转换为int
,然后检查是否与字符串相等(或尝试)。其次,要检查的值使用单引号。此代码是否编译?您是否有异常处理功能?我的猜测是,它会出错,根本不会运行。你能发布完整的代码吗
他们是对的。您应该首先尝试从要检查的整数值中删除单引号。您的代码需要一个switch
语句,如下所示:
switch (Session["level"].ToString())
{
case "1":
Response.Redirect("customer_menu.aspx");
break;
case "2":
Response.Redirect("front.aspx");
break;
case "3":
Response.Redirect("manager.aspx");
break;
default:
Response.Redirect("login.aspx");
break;
}
您的代码需要一个开关
语句,如下所示:
switch (Session["level"].ToString())
{
case "1":
Response.Redirect("customer_menu.aspx");
break;
case "2":
Response.Redirect("front.aspx");
break;
case "3":
Response.Redirect("manager.aspx");
break;
default:
Response.Redirect("login.aspx");
break;
}
op是根据字符而不是字符串检查int。此外,由于SQL注入的可能性,通常避免使用这种类型的用户身份验证查询。你应该读一读。单引号需要删除,因为该值被强制转换为int。单引号是错误的,,现在修复它。。。谢谢:)op正在根据字符而不是字符串检查int。此外,由于SQL注入的可能性,通常避免使用这种类型的用户身份验证查询。你应该读一读。单引号需要删除,因为该值被强制转换为int。单引号是错误的,,现在修复它。。。谢谢:)这是一些真正有安全缺陷的SQL代码。请不要在生产中使用它,这正是黑客试图做的事情。为什么不使用调试器进行调试,检查查询返回的内容,检查Session[“level”]
gets assigned等@LiveEn:如果sqlread.Read()返回false会发生什么?你需要测试这个案例。顺便说一句,LiveEn…你真的应该看看ASP.NET的内置安全功能。您实际上是在这里滚动您自己的用户和角色框架。如果你想,作为一个学习练习,那就这样吧。但是还有更好的方法。这是一些真正有安全缺陷的SQL代码。请不要在生产中使用它,这正是黑客试图做的事情。为什么不使用调试器进行调试,检查查询返回的内容,检查Session[“level”]
gets assigned等@LiveEn:如果sqlread.Read()返回false会发生什么?你需要测试这个案例。顺便说一句,LiveEn…你真的应该看看ASP.NET的内置安全功能。您实际上是在这里滚动您自己的用户和角色框架。如果你想,作为一个学习练习,那就这样吧。但是有更好的方法,我完全同意。我当然会在这里使用switch语句,我完全同意。我当然会在这里使用switch语句。