我的项目更加复杂,但这是我最基本的问题。我有一个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]
属性的用户。由于我无法完成注册,因此无法继续。
答案 0 :(得分:1)
使用2个DbContext。标识表(您的表或ASP.NET)不应属于Shared或Client项目。
我想授权具有[Authorize]属性的用户
真正的授权发生在服务器上,客户端中没有安全的东西。您是否看过模板中完整的(基于JWT的)实现?
- 我不能仅将我的users表添加到Shared并使用该表中的Identity吗? (因为它只是一个较大数据库的单个表)
否,身份需要基类。而且您的客户端应用不需要(也不应该看到)其大多数属性。
- 我需要两个数据库吗?一个用于身份验证,一个用于其余应用程序?
那是最好的方法。请注意,对于1个物理Db,您可以具有2个DbContext。
在需要时使用简单的UserId(无Nav属性)链接到用户。