0

我需要在 asp.net 中创建登录页面,我必须在其中创建 3 个用户访问级别,例如

可以查看电子邮件和更新的用户 可以查看电子邮件、更新并删除一些用户的超级用户 管理员也可以查看所有超级用户并删除超级用户。

我的登录页面有用户名密码和登录按钮

当用户/管理员/超级用户点击按钮时,它应该根据用户级别自动重定向他。

我有一个包含用户名、密码、用户 ID、用户访问类型、电子邮件的数据库。我的问题是我不知道如何在断开连接的数据库体系结构中编写基于 useraccesstype 的 if 命令,也不使用存储过程。

 String Uid = TextBox1.Text;
 String Pwd = TextBox2.Text;

 SqlConnection con = new SqlConnection(@"Data Source=Sun-PC\SQLEXPRESS;Initial Catalog=dts;Persist Security Info=True;User ID=sa;Password=********;");
 SqlDataAdapter da;
 da = new SqlDataAdapter("Select userid,password,useraccesstype from Table2 WHERE userid = " + Uid + " and password ='" + Pwd + "'", con);
 DataSet ds = new DataSet("Table2");
 da.Fill(ds, "Table2");

 if (Uid == "userid" && Pwd == "password")
 {
     if (uzrtype3 = "componentadmin")
     {
         Response.Redirect("userpage.aspx");
     }
     if (uzrtype = "user")
     {
         Response.Redirect("register.aspx");
     }
 }
 else
 {
     Label123.Text = "Sorry, user not recognized - please try again";
 }
4

1 回答 1

1

在字里行间阅读,我您是在问“如何获取 useraccesstype”?如果使用当前代码是这样,也许:

if(ds.Tables[0].Rows.Count == 1) {
    // match
    var accessType = ({appropriate cast here})ds.Tables[0].Rows[0]["useraccesstype"];
} else {
    // no match
}

然而!我会以不同的方式来解决各种参数问题并使其更安全 - 为方便起见使用“dapper-dot-net”(谷歌搜索):

string userid = ....
string password = ...
var row = con.Query(
   "Select useraccesstype from Table2 WHERE userid = @userid and password = @password",
   new { userid, password }).FirstOrDefault();
if(row == null) {
    // no match
} else {
    var accessType = ({some cast here})row.useraccesstype;
}

密码的加盐哈希也是您应该研究的问题。

没有必要返回用户 ID/密码:你已经知道了。您也可以使用 ExecuteScalar,但您需要自己处理参数。

于 2012-05-12T10:24:36.290 回答