в БД связаны по порядку. Есть контекст предоставляющей таблицу атрибуты, есть Id пользователя. Как мне изолировать данные в таблицы, чтобы пользователь не мог вытащить данные другого пользователя. Не ужели надо проверять всю цепочку от пользователя до атрибутов, чтобы сделать выборку атрибутов для конкретного пользователя?
Вообще это делается только кодом, это часть программы. И это ты должен делать независимо от того сто там куда уходит корнями. Это просто запросы.
Надо проверять и проверяют.
Если я у пользователя добавлю поле AccessKey типа Guid, и для каждой таблицы где необходимо делать разграничения тоже добавлю такое поле. И буду сверять по этому полю доступ в репо. Это норм тема? Практикуют так?
Очень туманно ты изложил... Сложно сказать. Вообще, проверка именно ДОСТУПА к данным на уровне строк таблиц реализуется очень редко, в большинстве случаев это - часть бизнес-логики и ею же и реализуется.
Что такое "каждой таблицы", что такое "Репо" — нифига не ясно.
Ну смотри, создаем пользователя, генерируем ключ AccessKey. Когда пользователь пишет строки, присваиваем каждой строки этот ключ. Репо сокращение от репозитория, прослойка для чтения и записи в коде.
Это я догалался что репо это репозиторий. А вот что такое в твоём понимании репозиторий — я лично не могу догадаться.
А другие пользователи как будут к этим строкам обращаться?
Видимо речь про паттерн "Репозиторий"
Как будут соотносится AccessKey и пользователь? у каждого пользователя один Access Key,
Ну у каждого пользователя свои записи данных и он с ними работает, разграничение этих данных идет по AccessKey. Когда пользователь получает данные по ключу идет фильтрация по AccessKey пользователя и AccessKey записи, а потом во втором условии по нужному ключу
Да, у каждого пользователя AccessKey внутренний. Не фигурирует в Url или ещё где
Почему бы тогда просто в каждую запись не положить поле — идентификатор пользователя - владельца? (user_id) и всё? Зачем промежуточный AccessKey ?
Ну можно и так. В моей системе id пользователя открытый фигурирует в url
И что?
Тут сам принцип. Ну не хочется светить во вне ключ разграничения, мало-ли как подлезть могут, вопрос безопасности
Эм... Незнание чего -то не есть безопасность.
Обсуждают сегодня