C# html表单发布到web api 2控制器
好的,我正试图了解WebAPI,我想创建一个mokup登录页面,将用户名和密码发布到一个认证控制器。然而,我似乎没有在我的帖子里得到任何东西 当我尝试验证控制器中的用户名和密码时,这会导致问题:C# html表单发布到web api 2控制器,c#,asp.net-web-api,dapper,owin,C#,Asp.net Web Api,Dapper,Owin,好的,我正试图了解WebAPI,我想创建一个mokup登录页面,将用户名和密码发布到一个认证控制器。然而,我似乎没有在我的帖子里得到任何东西 当我尝试验证控制器中的用户名和密码时,这会导致问题: public class LoginCredentials { public string Username { get; set; } public string Password { get; set; } } public class AuthenticationControl
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);;
}
}
public类LoginCredentials
{
公共字符串用户名{get;set;}
公共字符串密码{get;set;}
}
公共类身份验证控制器:ApiController
{
///
///创建已验证的会话。如果已成功验证,则返回“Set Cookie”标头
///包含将来请求的cookie。登录失败时,HTTP
返回401错误。
///
[HttpPost,AllowAnonymous]
[路由(“api/登录”)]
公共HttpResponseMessage登录([FromBody]登录凭据)
{
注销();
credentials.Username=credentials.Username??string.Empty;
credentials.Password=credentials.Password??string.Empty;
var authResult=Authentication.Authenticate(credentials.Username,
凭证(密码);
if(authResult==null | | authResult.User==null)
返回身份验证。GetUnauthorizedResponse();
如果(!authResult.UseAllowed)
返回Authentication.GetNotUseAllowedResponse
(结果、状态);
var authenticationManager=Request.GetOwinContext().Authentication;
authenticationManager.SignIn(authResult.User.ToIdentity());
返回新的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>
登录信息
用户名
密码
日志
在…上
不确定我所说的不正确。是否尝试将输入的
名称属性值与视图模型属性名称相同
<input id="Username" name="Username" type="text" />
这将把表单发布的数据绑定到视图模型对象