Политика на основе ресурсов Blazor webassembly с поиском в базе данных?

В моем проекте веб-сборки blazor (с размещенным ядром asp.net) я пытаюсь создать авторизацию на основе политик, которая выполняет поиск в базе данных.

Вопросы

  1. Где я должен хранить эти политики в проектном решении? Общий проект?
  2. Единственный проект, который знает dbcontext, - это серверный проект. Общий проект не имеет ссылки на серверный проект. Итак, я пытаюсь понять, как получить доступ к этому DbContext и как клиентский проект сможет зарегистрировать внедрение зависимости для DbContext ?

Идея

Я думаю, что моя политика должна будет сделать HTTP-запрос к apicontroller, чтобы получить данные, поэтому оставлю внедрение зависимостей базы данных в серверном проекте. Было бы это правильным путем?

Здесь был задан аналогичный вопрос:

Как мне в Blazor реализовать проверки авторизации на стороне клиента, для которых требуется доступ к серверу?

Как я могу использовать клиент авторизации на основе ресурсов? сторону в Blazor?

Любая помощь будет оценена по достоинству


person DotnetShadow    schedule 24.06.2021    source источник


Ответы (1)


Да, вы правильно ответили на свой вопрос. Сохраните контекст своей базы данных в проекте сервера. Общий проект ничего не знает о db, и он должен оставаться таким. Если вам нужны некоторые данные, извлеките их из базы данных в проекте сервера, преобразуйте их в DTO и отправьте их как ответ API вашему клиенту (как вы предложили). Храните свои DTO в общем проекте. Обратите внимание, что все в общем проекте отправляется пользователю как часть клиентского проекта.

Вдохновляйтесь: https://github.com/CuriousDrive/BlazingChat или https://github.com/dotnet-presentations/blazor-workshop

person Alamakanambra    schedule 24.06.2021
comment
Спасибо, что подтвердили мою идею, очень ценю - person DotnetShadow; 24.06.2021