2013-12-10 3 views
2

ОК, поэтому я пытаюсь получить голову вокруг веб-api, и я хотел создать страницу входа в mokup, которая отправляет имя пользователя и пароль контроллеру проверки подлинности. Тем не менее, я не кажется, что получает что-нибудь в моем постеhtml form post to web api 2controller

Post null

это то вызывает проблемы, когда я пытаюсь проверить usernaem и пароль в мой контроллер:

public class LoginCredentials 
{ 
    public string Username { get; set; } 
    public string Password { get; set; } 
} 

public class AuthenticationController : ApiController 
{ 
    /// <summary> 
    /// Creates an authenticated session. If successfully authenticated returns   a 'Set-Cookie' header 
    /// containing the cookie for future requests. On failed login attempt an HTTP 
       401 error is returned. 
    /// </summary> 
    [HttpPost, AllowAnonymous] 
    [Route("api/login")] 
    public HttpResponseMessage Login([FromBody]LoginCredentials credentials) 
    {   
     Logout(); 
     credentials.Username = credentials.Username ?? string.Empty; 
     credentials.Password = credentials.Password ?? string.Empty; 

     var authResult = Authentication.Authenticate(credentials.Username, 
          credentials.Password); 
     if (authResult == null || authResult.User == null) 
      return Authentication.GetUnauthorisedResponse(); 
     if (!authResult.UseAllowed) 
      return Authentication.GetNotUseAllowedResponse 
          (authResult.Status); 

     var authenticationManager = Request.GetOwinContext().Authentication; 
     authenticationManager.SignIn(authResult.User.ToIdentity()); 

     return new HttpResponseMessage(HttpStatusCode.NoContent);; 
    } 
    } 

Моя форма, таким образом, выглядит следующим образом:

<form autocomplete="off" method="post" action="/api/login" name="myLogin"> 

    <fieldset> 
     <legend>Login credentials</legend> 

     <div class="form-group"> 
      <label for="Username">Username</label> 
      <input id="Username" type="text" /> 
     </div> 

     <div> 
      <label for="Password">Password</label> 
      <input id="Password" type="password" /> 
      <span class="help-block" data-validation="Password"></span> 
     </div> 

     <div class="form-group center"> 
      <button type="submit" class="btn btn-primary" data-disable-on-submit="true">Log 
       on</button> 
     </div> 
    </fieldset> 
</form> 

не уверен, что у меня это не так.

ответ

2

Вы пытались дать входы name значение свойства, такое же, как и для имен свойств модели представления?

<input id="Username" name="Username" type="text" /> 

Это свяжет ваши данные, размещенные в форме, к объекту модели представления.

+1

Бинго, атрибут имени работал обработкой. ура – CSharpNewBee