2016-04-30 105 views
0

我創建了一個登錄頁面,但我嘗試登錄,代碼確實經歷了jQuery。但是我輸入了正確的密碼和用戶標識,但它一直讓我失敗。那麼有人能幫助我嗎?我以前在另一個登錄頁面上嘗試過這種方法,但它可以工作,但這次不起作用。使用MVC和存儲過程登錄

//網頁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) 

,如果你有什麼事都告訴我。

我的用戶DB只拿到ID(int),一個FK(int),用戶名(varchar)和密碼(varbinary)。

+0

在你的WebAPI操作方法,是可變LoginU讓您發佈的價值觀? –

+0

@KarthikMR是的,它獲取我發佈的值。它只是不斷返回我失敗的消息。 –

+0

@KarthikMR所以對不起,價值觀沒有通過,我不知道鏈接斷裂的地方 –

回答

0

在performLogin()中,所使用的變量必須與數據庫相同。

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

所以只是改變用戶標識ID,而且它已經將工作:d