MVC 标识验证用户名和密码以及自定义属性



我通过派生IsDeleted添加了自定义属性IdentityUser

public class AppUser : IdentityUser
{
    public int IsDeleted { get; set; }
}

目前,我正在尝试使用以下代码验证用户提供的用户名和密码。

var userManager = HttpContext.GetOwinContext().GetUserManager<AppUserManager>();
AppUser user = userManager.Find(userDetails.UserName, userDetails.Password); 

假设在这里,我创建了一个用户名为"abc@xyz.com"的用户,然后删除了该用户。当我删除用户时,IsDeleted属性将设置为 1。

后来,我创建了另一个或相同的用户名"abc@xyz.com"的用户,后一个用户在系统中处于活动状态。

如何确保userManager.Find将验证活动用户而不是已删除的用户?

您可以执行以下操作:

 AppUser user =  userManager.Users.Where(u =>  u.UserName == userDetails.UserName && u.IsDeleted != 1)
                 .FirstOrDefault();

如果您需要在检查中包含密码,那么您可以执行以下操作:

var userHashedPassword =  new PasswordHasher().HashPassword(userDetails.Password);
AppUser user =  userManager.Users.Where(u => u.UserName == userDetails.UserName && 
            u.PasswordHash == userHashedPassword && u.IsDeleted != 1).FirstOrDefault();

相关内容

  • 没有找到相关文章

最新更新