MVC Identity проверяет имя пользователя и пароль вместе с пользовательским свойством - PullRequest
0 голосов
/ 30 января 2019

Я добавил пользовательское свойство 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 будет проверять активного пользователя, а не удаленного?

1 Ответ

0 голосов
/ 30 января 2019

Вы можете сделать следующее:

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