簡體   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