Blazor webassembly 基于资源的策略与数据库查找?

问题描述

在我的 blazor webassembly 项目(托管 asp.net 核心)中,我试图创建一个基于策略的授权来进行数据库查找。

问题

  1. 我应该将这些政策存储在项目解决方案中的什么位置? 共享项目
  2. 唯一了解 dbcontext 的项目是 Server 项目共享项目没有对服务器项目的引用。所以我正在尝试解决如何访问这个 DbContext 以及 Client 项目 将如何能够为 DbContext 注册依赖注入?

想法

我认为我的策略必须向 apicontroller 发出 http 请求才能获取数据,因此将数据库依赖项注入留在服务器项目中。 这是正确的做法吗?

这里也有人问过类似的问题:

In Blazor,how do I implement client-side authorization checks that need server access?

How can I use resource-based authorization client-side in Blazor?

任何帮助将不胜感激

解决方法

是的,您正确回答了您的问题。将您的 db 上下文保留在 Server 项目中。共享项目对 db 一无所知,它应该保持这样。如果您需要一些数据,请从 Server 项目中的 db 检索它们,将它们转换为 DTO 并将它们作为 API 响应发送给您的客户端(如您所建议的那样)。将您的 DTO 存储在共享项目中。请注意,共享项目中的所有内容都作为客户端项目的一部分发送给用户。

您可以从以下方面获得灵感:https://github.com/CuriousDrive/BlazingChathttps://github.com/dotnet-presentations/blazor-workshop