首页 > 解决方案 > 具有数据库查找功能的 Blazor webassembly 基于资源的策略?

问题描述

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

问题

  1. 在项目解决方案中,我应该将这些策略存储在哪里?共享项目
  2. 唯一了解 dbcontext 的项目是Server 项目Shared 项目没有对Server 项目的引用。所以我试图弄清楚如何访问这个DbContext以及客户端项目如何能够为DbContext注册依赖注入?

主意

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

在这里问了一个类似的问题:

在 Blazor 中,如何实现需要服务器访问权限的客户端授权检查?

如何在 Blazor 中使用基于资源的授权客户端?

任何帮助将不胜感激

标签: blazorblazor-webassemblyasp.net-blazor

解决方案


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

您可以从以下网址获得灵感:https ://github.com/CuriousDrive/BlazingChat 或https://github.com/dotnet-presentations/blazor-workshop


推荐阅读