我的问题摘要
我的项目比较复杂,但这是我最基本的问题。我有一个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
包,因为它说共享项目与.Net标准2.1不兼容。
同样,更改共享项目的标准也没有奏效。
一些问题
-
我不能在Shared上添加我的users表并使用该表中的Identity吗?(因为它只是相当大的数据库的一个表(
-
我需要两个数据库吗?一个用于标识,一个用于应用程序的其余部分?
-
我是否需要使用身份验证&批准我还能用什么?或者我可以使用一个自定义的,在那里我可以使用它,正如我之前所描述的(在共享项目中有模型(
我的目标我想用[Authorize]
属性授权用户。由于我无法完成注册,我无法继续。
使用2个DbContexts。标识表(您的或ASP.NET(不应是共享或客户端项目的一部分。
我想用[authorize]属性授权用户
真正的授权发生在服务器上,客户端中没有任何东西是安全的。您是否查看了模板中完整的(基于JWT的(实现?
- 难道我不能在Shared上添加我的users表并使用该表中的Identity吗?(因为它只是相当大的数据库的一个表(
否,Identity需要基类。你的客户端应用程序不需要(也不应该看到(它的大部分属性。
- 我需要两个数据库吗?一个用于标识,一个用于应用程序的其余部分
这是最好的方法。请注意,对于1个物理Db,可以有2个DbContext。
需要时,使用简单的UserId(无Nav属性(链接到用户。