Как сделать данные доступными только для указанного c пользователя в веб-приложении? - PullRequest
0 голосов
/ 06 января 2020

Кажется, что это должно быть чем-то часто реализованным, но мне трудно найти информацию.

У меня есть Net Core MVC приложение, которое просто отображает записи из БД (main.db) , Я хочу, чтобы зарегистрированные пользователи могли редактировать / удалять / независимо от этих записей для себя. И в следующий раз, когда пользователь входит в систему, он видит, что изменились данные. Конечно, другие пользователи видят стандартные, неизмененные записи из main.db

В документации, когда кто-то изменяет данные, он меняется для всех

Что является стандартным подходом к реализации чего-либо нравится? Каким-то образом сопоставить «main.db» с таблицей AspNetUsers из «identity_service.db»?

1 Ответ

0 голосов
/ 06 января 2020

То, о чем вы говорите, это авторизация, которая является интерфейсом. Вы не должны и не должны ограничивать доступ к БД для каждого пользователя. Скорее, у вас есть только один пользователь БД, который само приложение использует для извлечения данных. Возможность редактировать, удалять и др. c. управляется приложением, в зависимости от того, «авторизован» ли пользователь для этой конкретной операции или нет, что обычно контролируется с помощью ролей или утверждений.

Другими словами, вы должны установить роли, такие как Edit, Delete и др. c. и затем вы назначаете эти роли пользователям соответствующим образом: то есть тем, кто должен иметь возможность редактировать, назначается роль Edit.

Наконец, у вас будет одно или несколько действий, которые фактически представляют просмотр для редактирования: пользователь взаимодействует с некоторой формой на странице HTML, чтобы фактически внести изменения. Для этих действий вы защищаете их с помощью атрибута Authorize и указываете разрешенные роли:

[Authorize(Roles = "Edit")]
public IActionResult MyEditAction()

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

Это намеренно очень простой c обзор. Вероятно, вам понадобятся другие типы авторизации: на основе ресурсов (на уровне строк AKA), на основе политик и т. Д. c. Обратитесь к документации для получения дополнительной информации.

...