W której warstwie sprawdzac, czy użytkownik istnieje już w bazie

0

W której warstwie sprawdzać czy user istnieje w bazie.

mama w warstwie modelu model uzytkownika

public class User
{
 public Guid Id {get; protected set;}
 public string Login {get; protected set;}
 public string Password{get; protected set;}
 //...
}

w warstwie Infrastructure mam:

public interface IUserService
{
 void Register();
 void Login();
 UserDto Get();
}

public class UserService : IUserService
{
 public void Login()
 {
     //tutaj logujemy uzytkownika
     //pytanie czy tutaj tez logika sprawdzania czy już taki user nie istnieje w bazie?

     //...
 }
}
0

W przypadku systemu logowania to nigdzie. Pobierasz użytkownika z DB i jeśli ma hasło to sprawdzasz czy jest poprawne, jeśli nie ma hasła (co nota bene oznacza, że nie ma takiego użytkownika) to sprawdzasz czy hash podanego hasła jest równy innemu hashowi, który na 100% nie odpowiada podanemu. Chodzi o to by uniknąć timing attacks.

0

No tak. A w przypadku Register?

0

W bazie danych, nie w aplikacji, bo sprawdzanie w aplikacji nie zawsze zadziała. Czyli dodajesz unikatowy indeks na polach, które mają być unikatowe a następnie sprawdzasz co zwróciła DB.

1 użytkowników online, w tym zalogowanych: 0, gości: 1