2014-10-22 17 views
0

我已經搜索了至少一個半小時,我沒有更接近學習如何在我的ApiController中使用POST方法。我需要一種有效的方式來使用post創建一個登錄系統,該系統將根據用戶名/密碼組合搜索我的數據庫,並創建一個JSON對象,然後將其發送回我的網頁。任何資源使用後?我試圖用GET來acomplish這一點,但我可以用任何變量多於「ID」如何在ApiController中使用POST

public IHttpActionResult GetLogin(string id) 
     { 
      //Query Database for Unique username. 

      if (id == "mager1794") 
      { 

       //Create Login class with username, and password details. 
       return Ok(new Models.Login() { id = 1, userName = "mager1794", passWord = "*******" }); 
      } 


      return Ok(-1); 
     } 

這是我有我的Get方法,但我只是沒有任何運氣創建的POST版本這個。

回答

1

也許是這樣的:

[RoutePrefix("api/account")] 
public class AccountController : ApiController 
{ 
    public class LoginInfo 
    { 
     [Required] 
     public string Username { get; set; } 

     [Required] 
     public string Password { get; set; } 
    } 

    [Route("login")] 
    [HttpPost] 
    public IHttpActionResult AuthenticateUser(LoginInfo loginInfo) 
    { 
     if (!ModelState.IsValid) 
     { 
      return BadRequest(ModelState); 
     } 

     if (!Membership.ValidateUser(loginInfo.Username, loginInfo.Password)) 
     { 
      ModelState.AddModelError("", "Incorrect username or password"); 
      return BadRequest(ModelState); 
     } 

     FormsAuthentication.SetAuthCookie(loginInfo.Username, true); 

     return Ok(); 
    } 
} 

客戶端:

<form action="#" id="login-form"> 
    <label for="username">Username:</label> 
    <input type="text" name="username" id="username"/> 

    <label for="password">Password:</label> 
    <input type="password" name="password" id="password"/> 
    <div><input type="submit"/></div> 
</form> 

<script> 
    $(document).ready(function() { 
     $("#login-form").submit(function (e) { 
      e.preventDefault(); 

      var username = $('#username').val(); 
      var password = $('#password').val(); 

      $.ajax({ 
       type: 'POST', 
       url: '/api/account/Login/', 
       data: { Username: username, Password: password }, 
       success: function() { 
        // refresh the page if username and password are correct 
        location.reload(); 
       } 
      }); 
     }); 
    }); 
</script> 
+0

你是一個生命的救星人,代碼並沒有出於某種原因,但所有我需要做的就是改變函數的名稱爲'Post',它在我的下一次嘗試中起作用。非常感謝! – 2014-10-22 08:18:51

相關問題