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

标签 c# asp.net

我正在尝试从网站登录网络服务。我有一个带有表 USERS 的访问数据库(id、user、pass、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);
}

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

我正在考虑以某种方式从数据集 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/

相关文章:

asp.net - 如何在使用 MasterPage 的 ASP.NET Web 窗体中为服务器控件设置特定 ID?

c# - Fedex 服务集成错误(无法生成临时类)

C#:非法 Switch 语句的解决方法?

c# - 强制 Log4Net 输出特定事件

asp.net - Excel VBA查询外部.aspx页面并检索数据

c# - 如何通过超链接字段传递变量背后的代码

.net - 适用于 .NET 的嵌入式 CMS

c# - 使用 NLog 登录多个文件

c# - 如何使工作 'do not copy' app.config到输出目录?

asp.net - VSTS 构建失败 - 错误 : Web deployment task failed