.Net Core 身份在 .Net Core 5.0 中添加公司名称作为用户登录过程的一部分
Posted
技术标签:
【中文标题】.Net Core 身份在 .Net Core 5.0 中添加公司名称作为用户登录过程的一部分【英文标题】:.Net Core Identity Add Company Name As Part Of User Login Process In .Net Core 5.0 【发布时间】:2021-11-06 07:58:31 【问题描述】:是否可以在 .Net Core Identity 中使用其他用户字段进行用户登录?我想允许使用电子邮件、密码和第三个字段(即Company Name
)登录用户,这是我在ApplicationUser class
中定义的自定义字段,继承自IdentityUser class
。
我的 ApplictionUser 类:
public class ApplicationUser : IdentityUser
public string FirstName get; set;
public string LastName get; set;
public string CompanyName get; set;
它工作正常。我可以在注册时为用户添加公司名称。
这是由身份脚手架创建的身份 InputModel 代码:
public class InputModel
[Required]
[EmailAddress]
public string Email get; set;
[Required]
[DataType(DataType.Password)]
public string Password get; set;
[Required]
[Display(Name = "Company Name")]
public string CompanyName get; set;
[Display(Name = "Remember me?")]
public bool RememberMe get; set;
我在此处添加了 CompanyName 额外字段。现在我想根据这些字段登录用户。如果用户在登录页面提供的公司名称正确,则允许用户登录,否则不允许。
我在Login.cshtml.cs
文件的OnPostAsync method
中执行以下自定义代码:
var user = await _userManager.FindByEmailAsync(Input.Email);
ApplicationUser user = new ApplicationUser
Email = Input.Email,
UserName = Input.Email,
CompanyName = Input.CompanyName,
;
var result = await _signInManager.PasswordSignInAsync(user, Input.Password, Input.RememberMe, lockoutOnFailure: false);
但是每次尝试的结果总是失败。这里有什么问题吗?
【问题讨论】:
【参考方案1】:您似乎正在用您的新实现覆盖 user
对象,该实现没有密码哈希来检查(除其他外)。
直接检查user
是否有正确的公司名称可能更简单,如果不匹配则抛出错误,如下所示:
var user = await _userManager.FindByEmailAsync(Input.Email);
if (user == null || user.CompanyName != Input.CompanyName)
ModelState.AddModelError("", "Invalid login attempt");
return View(model);
var result = await _signInManager.PasswordSignInAsync(Input.Email, Input.Password, Input.RememberMe, lockoutOnFailure: false);
【讨论】:
以上是关于.Net Core 身份在 .Net Core 5.0 中添加公司名称作为用户登录过程的一部分的主要内容,如果未能解决你的问题,请参考以下文章
text 使用ASP.NET Core 2 Web API,Angular 5,.NET核心身份和Facebook登录进行JWT身份验证
ASP.NET Core 5.0 WebAPI 中的多种身份验证方案
ASP.NET Core 5 OpenIdConnect 身份验证 cookie 在理论上是如何工作的?
ASP.NET Core 5 JWT 身份验证失败,响应代码为 401