2016-04-30 58 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