169 похожих чатов

Ну вот отличный вопрос на порассуждать в воскресенье. На примере,

например.
Вот у меня есть пользователь. И мне нужно его аутентифицировать.
Как оно сейчас? Сервис аутентификации, метод LogOn(login, password), возвращает экземпляр User. User - простейшее DTO. Ну там, FirstName, LastName, Login, Email и т.д.
Если мы объединяем логику работы с данными и сами данные, то тогда как?
В конструкторе? Типа: new User(login, password) и лезем в базу? Да не, нельзя. У нас же везде async / await.
Тогда
var user = new User();
await user.LogOn(login, password);
-> user.Email => "user@domain.com"

var user2 = new User();
-> user.Email => throw new EntityStateException("Entity is not initialized")
Так получается?

1 ответов

9 просмотров

Погнали: 1. За аутентификацию у тебя отвечает специальный сервис, который принимает на вход пользователя, тут идём вровень, НО этот сервис принимает не какую-то там ДТО пользователя, а твоего доменного, который уже сугубо правильный с точки соблюдения всех валидаций! ДТО тебе не могут гарантировать инкапсуляцию. await user.LogOn(login, password); -> бред, у тебя пользователи сами себя логинят? это же не так, даже по элементарной логике

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта