使用MVC和存储过程登录

时间:2016-04-30 07:43:43

标签: c# jquery asp.net-mvc stored-procedures asp.net-web-api

我创建了一个登录页面,但是我尝试登录,代码确实通过了jQuery。但是我输入了正确的密码和用户ID,但它一直让我失败。那么有人可以帮助我吗?我之前在另一个登录页面上尝试过这种方法,它可以工作,但这一次,它不起作用。

// Web API

[HttpPost]
    public IHttpActionResult Login([FromBody]testLogin LoginU)
    {
        if(HttpContext.Current.Session["user"] != null)
        {
            return Ok("LoggedIn");
        }
        else
        {
            using (Entities dbc = new Entities())
            {
                LogIn_Result result = dbc.LogIn(LoginU.id, LoginU.password).FirstOrDefault<LogIn_Result>();
                user currentUser = null;
                if (result != null)
                {
                    DbSet<user> dbs = dbc.users;
                    IQueryable<user> q = from s in dbs
                                            where s.id == result.id
                                         select s;
                    user = q.FirstOrDefault<user>();
                    HttpContext.Current.Session["user"] = user;
                    return Ok("/Home/Index");
                }
                else
                {
                    return Ok("Failed");
                }

            }
        }

// jQuery的

function performLogin() {
    var login = {
        userid: $("#TxtUserName").val(),
        password: $("#TxtPassword").val()
    };
    var apiUrl = "/api/HomeAPI";
    alert(login.password);
    alert(login.userid);
    $.ajax({
        type: "POST",
        url: apiUrl,
        dataType: "JSON",
        data: login,
        success: function (result) {
            alert(result);
            if (result == "Failed") {
                $("#spanMsg").html("OMG FAILLLL");
            }
            else if (result == "LoggedIn") {
                $("#spanMsg").html("Another dude logon already");
            }
            else {
                window.location.href = result;
            }
        }
    });
}

$(document).ready(function () {
    $("#BtnLogin").click(function () {
        performLogin();
    });
});

存储过程:

CREATE PROCEDURE [LogIn]
    @id int,
    @password varchar(50) 
AS
    SELECT * 
    FROM [dbo].[user]
    WHERE id = @id AND password = HASHBYTES('SHA1', @password)

如果您还有其他需要通知我。

我的用户数据库只有ID(int),一个FK(int),用户名(varchar)和密码(varbinary)。

1 个答案:

答案 0 :(得分:0)

在performLogin()中,使用的变量必须与数据库相同。

function performLogin() {
var login = {
    id: $("#TxtUserName").val(),
    password: $("#TxtPassword").val()
};

所以只需将userid更改为id,它就可以了:D