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

У меня тоже непонимание. Я часто вижу позицию, что хеширование пароля

пользователя не относится к предметной области. Но как тогда валидировать длину пароля, если предметная область будет получать уже готовый хэш? Получается размазывание логики проверки инварианта и анемия.

Еще я видел утверждение у Хорикова, что предметная область должна быть свободна от волатильных и внепроцессных зависимостей. Но хеширование пароля, по моему мнению, внутрипроцессная зависимость и может относиться к типу волатильных зависимостей и то, только в случае если генерится рандомная соль. Но при этом генератор соли можно сделать явной зависимостью и передавать при обновлении пароля.

Еще говорят, что весь алгоритм хеширования нужно делать явной зависимостью. Но а какой в этом смысл если только соль волатильная? Тем более алгоритм хеширования пароля не то, что требуется часто менять, поэтому нет смысла в абстракциях

Еще хеширование не так уж много времени занимает, чтобы стать проблемой при юнит тестировании.

В общем я не понимаю почему хеширование пароля это не предметная область и почему реализация должна быть в инфраструктуре

3 ответов

8 просмотров

но алгоритм хэширования может меняться. Хороший пример как сделали в PHP с их password api где у тебя строка с хэшем содержит и соль и указание какой алгоритм юзать и все что надо. И тип вот сча у них апдейт был и они с bcrypt перешли на argon2.

Alexander- Автор вопроса

Ну вот он поменялся. Слетели тесты предметной области. Я просто возьму и поменяю реализации setPassword и validatePassword у сущности User и буду дальше использовать bcrypt. А наличия явной зависимости на интерфейсе шифрования не избавило бы от этих же действий

Alexander
Ну вот он поменялся. Слетели тесты предметной обла...

проблема в том что не надо "предметную область" воспринимать как что-то одно. аутентификация - у нее свой под домен и там хэширование пароля может быть частью бизнес логики. Почему бы нет.

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

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

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
короче сгенерила мне эта штука код на ассемблере: struc string val { common local .value dq .value .value: if ~val eq db val end if db 0 } fo...
Vi Chapmann Chapmann
12
Всем привет! Массив вводится с клавиатуры, кол-во элементов неизвестно, поэтому я указал arr db 100 dup(?) С нахождением максимума проблем нет, а вот минимум почему-то всегд...
En Vind Av Sorg
11
Помогите, пожалуйста, делаю программу для для подсчёта корней квадратного уравнения, знаю, что есть куча недочётов, недоработок, но основная проблема в том, что почему-то при ...
NYC
13
#include <stdio.h> int main(void) { int n; scanf("%d", &n); int digits1[n] = {0}; int digits2[n] = {0}; я не могу таким образом заранее массив нулями заполнить?
Linus
12
в сях есть множество как в питоне? для удаление дубликатов
Linus
25
читать файл максимально быстро? странный вопрос))
zamtmn
53
я про форму записи. смысл указывать что 8 байтный регистр 8 байт?
Aiwan \ (•◡•) / _bot
10
Вроде бы вопрос уже заезжанный, но тем не менее У меня есть функция menu() которая выводит набор возможных действий, а затем спрашивает у пользователя что он хотел бы сделать....
David Golovatin
4
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Карта сайта