C# 如何将ASP.NET MVC默认登录页面更改为通过用户名而不是电子邮件地址登录?
我会检查一下我的调查结果,希望你们能想出我下一步该做什么的主意 登录的相关M、V和C如下所示C# 如何将ASP.NET MVC默认登录页面更改为通过用户名而不是电子邮件地址登录?,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我会检查一下我的调查结果,希望你们能想出我下一步该做什么的主意 登录的相关M、V和C如下所示 public class LoginViewModel { [Required] [Display(Name = "Email")] [EmailAddress] public string Email { get; set; } [Required] [DataType(DataType.Password)] [Display(Name = "
public class LoginViewModel
{
[Required]
[Display(Name = "Email")]
[EmailAddress]
public string Email { get; set; }
[Required]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[Display(Name = "Remember me?")]
public bool RememberMe { get; set; }
}
及
和V到
@using (Html.BeginForm("Login", "Account", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(m => m.UserName, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.TextBoxFor(m => m.UserName, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.UserName, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.Password, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.PasswordFor(m => m.Password, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.Password, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group" style="margin-bottom: 40px;">
<div class="col-md-10">
<div class="checkbox">
@Html.CheckBoxFor(m => m.RememberMe)
@Html.LabelFor(m => m.RememberMe)
</div>
</div>
</div>
<div class="form-group">
<div class="col-md-10">
<input type="submit" value="Log in" class="btn btn-default" style="padding-left: 40px; padding-right: 40px;" />
</div>
</div>
}
到
但是,一定有更好的办法,对吗
另外,我可能通过修改LoginViewModel
而搞砸了其他东西,因为MVC模板中的其他代码可能会使用它,并希望它有一个电子邮件
字段
那么我到底应该在这里做什么呢?我想要最简单的零钱
如果我必须更改PasswordSignInAsync,实现在哪里?我找不到它。默认模板实现使用电子邮件地址作为用户名,这就是它将
model.email
值发送到PasswordSignInAsync
函数的原因。假设您使用单独的电子邮件
和用户名
值创建了用户帐户,那么将登录方法更改为:
var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, shouldLockout: false);
同样,这假设您的用户帐户是使用不同的
用户名
和电子邮件
值创建的。默认模板实现使用电子邮件地址作为用户名,这就是它将model.Email
值发送到密码签名同步
函数的原因。假设您使用单独的电子邮件
和用户名
值创建了用户帐户,那么将登录方法更改为:
var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, shouldLockout: false);
同样,这假设您的用户帐户是使用不同的
用户名
和电子邮件
值创建的。默认模板实现使用电子邮件地址作为用户名,这就是它将model.Email
值发送到密码签名同步
函数的原因。假设您使用单独的电子邮件
和用户名
值创建了用户帐户,那么将登录方法更改为:
var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, shouldLockout: false);
同样,这假设您的用户帐户是使用不同的
用户名
和电子邮件
值创建的。默认模板实现使用电子邮件地址作为用户名,这就是它将model.Email
值发送到密码签名同步
函数的原因。假设您使用单独的电子邮件
和用户名
值创建了用户帐户,那么将登录方法更改为:
var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, shouldLockout: false);
再说一遍,这假设您的用户帐户是使用不同的
用户名
和电子邮件
值创建的。PasswordSignInAsync的实现或文档在哪里?PasswordSignInAsync的实现或文档在哪里?PasswordSignInAsync的实现或文档在哪里PasswordSignInAsync的实现或文档?
var email = pingDatabaseAndGetEmailFromUsername(model.UserName);
var result = await SignInManager.PasswordSignInAsync(email, model.Password, model.RememberMe, shouldLockout: false);
var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, shouldLockout: false);