如何解决Blazor WebAssembly中使用数据库优先方法的身份验证和授权 一些问题
我的问题摘要
我的项目更加复杂,但这是我最基本的问题。我有一个Blazor WebAssembly项目,该项目仅执行基本的CRUD操作。
我也有一个小型数据库,可以说我有两个表Users
和Roles
。我要做的是通过使用Scaffold-DbContext
以数据库优先的方式创建他们的类,并且我在Shared
项目上运行了此命令,因为我也希望从Server
都访问这些类。和Client
个项目。
当我在创建Blazor WebAssembly项目时尝试在“身份验证”选项卡上使用Individual User Accounts
时,它将在服务器中创建数据模型。这意味着我无法从Client
项目访问我的表。它们必须位于Shared
中。它也是基于代码优先的。我不想使用迁移。
我尝试过的
我想做的是用Individual User Accounts
项目创建一个几乎相同的项目,但是我的Users
类继承了IdentityUser
并且我的DbContext继承了ApiAuthorizationDbContext
但问题开始了在这里。
我无法从NuGet添加ApiAuthorization
程序包,因为它说共享项目与.NetStandard 2.1不兼容。
更改共享项目的标准也不起作用。
一些问题
-
我不能仅将我的users表添加到Shared并使用该表中的Identity吗? (因为它只是一个较大数据库的单个表)
-
我需要两个数据库吗?一个用于身份验证,一个用于其余应用程序?
-
我需要使用身份进行身份验证和授权吗?我还能使用什么?或者我可以在自定义的位置使用自定义的位置(在共享项目中有模型)
我的目标
我想授权具有[Authorize]
属性的用户。由于我无法完成注册,因此无法继续。
解决方法
使用2个DbContext。标识表(您的表或ASP.NET)不应属于Shared或Client项目。
我想授权具有[Authorize]属性的用户
真正的授权发生在服务器上,客户端中没有安全的东西。您是否看过模板中完整的(基于JWT的)实现?
- 我不能仅将我的users表添加到Shared并使用该表中的Identity吗? (因为它只是一个较大数据库的单个表)
否,身份需要基类。而且您的客户端应用不需要(也不应该看到)其大多数属性。
- 我需要两个数据库吗?一个用于身份验证,一个用于其余应用程序?
那是最好的方法。请注意,对于1个物理Db,您可以具有2个DbContext。
在需要时使用简单的UserId(无Nav属性)链接到用户。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。