gpt4 book ai didi

c# - 在 asp.net 中使用 Web 服务的网站登录表单

转载 作者:行者123 更新时间:2023-11-30 20:52:40 25 4
gpt4 key购买 nike

我正在尝试从网站登录网络服务。我有一个带有表 USERS 的访问数据库(id、用户、密码、int admin(如果是 1,如果不是则为 0)。在网络服务中我有这个网络方法:

[WebMethod]
public DataSet login(string u, string p)
{
OleDbConnection CNN = null;
OleDbCommand CMD = null;

string sql = "select * from users where username ='" + u + "' and pass='" + p + "' ";

CNN = new OleDbConnection(conn);
CMD = new OleDbCommand(sql, CNN);
CMD.Connection.Open();

OleDbDataAdapter adapter = new OleDbDataAdapter(CMD);
DataSet ds = new DataSet();
adapter.Fill(ds, "logged");

CNN.Close();
return ds;
}

而且,在网站上我有这段代码:

protected void Button1_Click(object sender, EventArgs e)
{
db.Service Login = new db.Service();

Login.login(lUser.Text, lPass.Text);
}

所以我的问题是如何查看登录的用户是否为管理员?

我想以某种方式从 DataSet ds 中读取它 - 因为它充满了我需要的所有信息,但如何做到这一点?

谢谢,德尼斯科

最佳答案

首先,请避免使用 sql 字符串将用户键入的值直接传递给数据库。您对 SQL 注入(inject)攻击持开放态度,并且也容易出错

//Parametrize your following query.
string sql = "select * from users where username ='" + u + "' and pass='" + p + "' ";

Here is an example on how to parametrize OleDbCommand.

您问题的答案:

您的login() 方法返回一个DataSet 对象,因此您需要将login() 方法的返回值分配给一个数据集

db.Service Login = new db.Service();

DataSet ds = Login.login(lUser.Text, lPass.Text);

bool isAdmin = false;

//Check if there is a record for the username and password
if(ds.Tables[0].Rows.Count == 1)
{
//now check if user is an admin or not
isAdmin = Convert.ToBoolean(ds.Tables[0].Rows[0]["admin"]);

if(isAdmin)
{
//User is an admin
}

}else{

//User does not exist in the database
}

关于c# - 在 asp.net 中使用 Web 服务的网站登录表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20719640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com