使用sql数据库表属性作为Web应用程序中用户的登录凭据

时间:2015-06-05 08:16:03

标签: jquery asp.net asp.net-mvc asp.net-mvc-4

这是我的控制器,我在其中创建了一个DataTable。

public class HomeController : Controller
    {
        string connString = "Data source=DEVELOPER1; Initial catalog=Temp;Integrated security=True";
        string commString = "";

        public ActionResult Index()
        {
            List<string> list = new List<string>();
            commString = "select * from usermaster";
            DataTable datatable = GetDataTable(commString);
            return View(datatable);
        }
        public DataTable GetDataTable(string strQuery)
        {
            DataTable datatable = new DataTable();
            using (SqlConnection conn = new SqlConnection(connString))
            {
                conn.Open();
            using (SqlCommand comm = new SqlCommand(commString, conn))
            {
                    SqlDataReader sqlDataReader = comm.ExecuteReader();
                    datatable.Load(sqlDataReader);
                }
            }
            return datatable;
        }

这是我的观点。

<input type="text" id="text1" value="" />
<br />
<br />
<input type="text" id="text2" value="" />
<br />
<br />
<input type="button" id="button1" value="Button" onclick="button1_click()" />

以下是我在 commString 中使用的查询的屏幕截图。

enter image description here 这是我当前项目位置输出的图像。

enter image description here

现在我的要求是如果用户在两个文本字段中都放置“adm”,那么它将在警告框中显示“true”,否则它将显示“false”。 即使用户将任何一个字段留空,也会显示“false”。 请帮忙。

2 个答案:

答案 0 :(得分:1)

看起来像这样的东西可能是你之后的

  • 不允许将允许的登录信息+密码传递给视图,任何人都可以执行浏览器查看源并查看有效登录信息
  • 相反,将输入的用户+传递传递给控制器​​并检查
  • 使用POST,因为它更难拦截
  • 考虑使用现有的内置登录机制,例如Forms login

客户代码:

 function button1_click() {
    $.ajax({
        url: "/Home/Login",
        method: "POST",
        data: { 
            name: $('#text1').val(),
            password: $('#text2').val(),
        },
        dataType: "json",
        success: function (data) {
            alert(data);
        }
    });

控制器:

    public ActionResult Index()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Login(string name, string password)
    {
        commString = "select * from usermaster";
        DataTable datatable = GetDataTable(commString);

        // Check datatable contains name + password here
        bool found = ...

        return new JsonResult() { Data = found };
    }

答案 1 :(得分:1)

这里我只是用“adm”检查字符串而不是从数据库

在视图中,您需要编写

function button1_click() {
var url = '@Url.Action("Download","Home")';
    $.ajax({
        url: url,
        method: "POST",
        data: { 
            name: $('#text1').val(),
            password: $('#text2').val(),
        },
        dataType: "json",
        success: function (data) {
            alert(data);
        }
    });

在控制器

  

  public ActionResult Download(string text1, string text2)
        {
            if (text1 == null || text2 == null)
            {
                return Json(false, JsonRequestBehavior.AllowGet);
            }
            else
            {
                if (text1 == "adm" && text2 == "adm")
                {
                    return Json(true, JsonRequestBehavior.AllowGet);
                }
                else
                {
                    return Json(false, JsonRequestBehavior.AllowGet);
                }
            }
        }