Репозиторий - это механизм для инкапсуляции хранения, извлечения и поиска, который эмулирует коллекцию объектов .
Я думаю, что можно возвращать логическое значениеиз хранилища, но только в том случае, если метод включает все объекты в этом хранилище.Репозиторий обычно предоставляет коллекционный интерфейс.Например, users.IsEmpty()
или users.IsNameUnique("jdoe")
кажутся логичными, потому что им нужен доступ ко всей коллекции.
В вашем сценарии только поиск пользователя по имени является ответственностью, которая может быть назначена хранилищу.Проверка правильности пароля не кажется подходящей для хранилища.Поэтому второй, более подробный подход кажется мне более подходящим.
В качестве альтернативы у вас может быть выделенный интерфейс Authenticator в вашем домене и реализация на уровне доступа к данным (аналогично тому, как реализованы репозитории).Или Authenticator может стать доменной службой, которая использует хранилище для внутренних нужд.Аутентификатор также может определять между «пользователь не найден» или «пароль недействителен», что, вероятно, имеет другое деловое значение.