c# - 如何更改身份 asp.net mvc 中的用户登录凭据?
问题描述
我是 MVC 的新手,正在研究用户身份验证授权。我想用 UniqueNumber 而不是电子邮件更改用户登录凭据。
我试过了,但它抛出了这个错误
错误 1: “Microsoft.AspNet.Identity.Owin.SignInManager.PasswordSignInAsync(string, string, bool, bool)”的最佳重载方法匹配有一些无效参数
登录操作
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if (!ModelState.IsValid)
{
return View(model);
}
// This doesn't count login failures towards account lockout
// To enable password failures to trigger account lockout, change to shouldLockout: true
var result = await SignInManager.PasswordSignInAsync(model.UniqueNumber, model.Password, model.RememberMe, shouldLockout: false);
switch (result)
{
case SignInStatus.Success:
return RedirectToLocal(returnUrl);
case SignInStatus.LockedOut:
return View("Lockout");
case SignInStatus.RequiresVerification:
return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
case SignInStatus.Failure:
default:
ModelState.AddModelError("", "Invalid login attempt.");
return View(model);
}
}
登录视图模型
public class LoginViewModel
{
[Required]
[Display(Name = "Unique Number")]
public int UniqueNumber { get; set; }
[Required]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[Display(Name = "Remember me?")]
public bool RememberMe { get; set; }
}
解决方案
考虑到这个问题可能是这个SO 答案的副本:
您必须更改用户的注册以UniqueNumber
在调用时使用而不是电子邮件:var user = new ApplicationUser { UserName = model.UniqueNumber, Email = model.Email };
。
是的,正如@Gonzalo Lorieto 所说,您必须将UniqueNumber
字符串转换为字符串。
推荐阅读
- html - 实现复制按钮功能
- networking - 如何从其他 pod 解析 pod 主机名?
- c# - 复选框上奇怪的灰色背景
- spring-boot - 通过spring数据导入数据到neo4j graphDB
- ruby-on-rails - 将一个模型作为属性传递给另一个模型
- pycharm - 在pycharm中关闭python 3.5警告
- node.js - Azure B2C 微服务身份验证和 GraphQL 层
- java - 方法链接,从列表中返回一个对象并从中获取值
- python - python如何在两个日期列之间找到每个月的天数
- elasticsearch - Kafka Elastic Connector 上的 CamelCase 模式