Blazor WebAssembly中数据库优先的身份验证和授权方法



我的问题摘要

我的项目比较复杂,但这是我最基本的问题。我有一个Blazor WebAssembly项目,我只做基本的CRUD操作。

我还有一个小数据库,假设我有两个表UsersRoles。我所做的是使用Scaffold-DbContext以数据库优先的方式创建它们的类,并在Shared项目上运行此命令,因为我还想从ServerClient项目访问这些类。

当我在创建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属性(链接到用户。

相关内容

  • 没有找到相关文章

最新更新