代码之家  ›  专栏  ›  技术社区  ›  Gopi

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

  •  0
  • Gopi  · 技术社区  · 7 年前

    我添加了一个自定义属性 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”然后删除了用户。当我删除用户时 已删除

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

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

    1 回复  |  直到 7 年前
        1
  •  2
  •   TanvirArjel    7 年前

     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();