ok, alors j'essaie de me familiariser avec web API, et je voulais créer une page de connexion mokup, qui affiche le nom d'utilisateur et le mot de passe sur un contrôleur d'authentification. Cependant, je ne semble rien avoir dans mon post
Cela pose des problèmes lorsque j'essaie de valider le nom d'utilisateur et le mot de passe dans mon contrôleur:
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);;
}
}
Ma forme ressemble donc à:
<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>
Je ne sais pas ce que je n'ai pas correct.
Avez-vous essayé de donner à la propriété name
entrées la même valeur que les noms de propriété du modèle de vue?
<input id="Username" name="Username" type="text" />
Cela liera les données de votre formulaire à l'objet du modèle de vue.