繁体   English   中英

使用MVC和存储过程登录

[英]Login with MVC and stored procedure

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

// 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 )。

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

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

因此,只需将userid更改为id即可使用:D

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM