我正在使用sql server 2005和C#开发一个asp.net应用程序,我遇到安全问题。 我有三个用户级别:
每个用户都有自己的表单,用户存储在sql表中,如下所示: 用户,密码和级别。 我可以成功地将每个用户重定向到各自的表单。 我遇到的问题是,我不想让其他用户嗅到其他表单。这是我的代码:
string level;
string connstring = @"Data Source=oyner-PC\SQLEXPRESS;Initial Catalog=sat;Persist Security Info=True;User ID=login1;Password=?????????";
protected void btnLogin_Click(object sender, EventArgs e)
{
string name = txtUser.Text;
string password = txtPassword.Text;
SqlConnection conn = new SqlConnection(connstring);
conn.Open();
SqlCommand cmdd = new SqlCommand("SELECT level FROM users WHERE name = @name AND password = @pass", conn);
cmdd.Parameters.AddWithValue("@name", name);
cmdd.Parameters.AddWithValue("@pass", password);
var firstColumn = cmdd.ExecuteScalar();
if (firstColumn != null)
{
tipo = firstColumn.ToString();
if (level == "Level_1")
{
Response.Redirect("level_1/leve_1.aspx");
}
if (level == "Level_2")
{
Response.Redirect(""level_2/leve_2.aspx"");
}
if (tipo == "Level_3")
{
Response.Redirect(""level_3/leve_3.aspx"");
}
}
if (firstColumn == null)
{
lblMensaje.Text = "Access denied,";
}
}
任何建议都非常有用
答案 0 :(得分:0)
这大致类似于ASP.NET授权中的用户角色。
例如,如果Level 1是Role1(例如),Level 2 = Role2等,那么您可以在应用程序的web.config中指定特定组的用户无法查看某些页面(例如您的表单页面) )。例如,要将特定页面限制为仅限Level1用户,您可以在web.config中指定类似:
<location path="Login\form1.aspx" >
<authorization>
<allow roles="Level1"/>
<deny users="?"/>
</authorization>
</location>
在此处了解更多相关信息:ASP.NET Authorization