【问题标题】:Blazor ASP.NET Hosted Identity Authentication with already existing database with Identity tablesBlazor ASP.NET 托管身份身份验证与现有数据库和身份表
【发布时间】:2021-06-02 14:30:36
【问题描述】:
我已经看到了使用没有身份表的现有 SQL 数据库实现 ASP.NET 身份的示例。但我的问题是如何在 Blazor 应用程序中使用已经有身份表的现有 SQL 数据库实现 ASP.NET 身份实施。
只是修改 ApplicationUser 模型来满足 AspNetUsers 表方案那么简单吗?还是这种实现方式还有更多?
Blazor 应用程序是从头开始,wasm 和 ASP.NET Core 托管的。
【问题讨论】:
标签:
c#
asp.net
authorization
asp.net-identity
blazor
【解决方案1】:
在首次使用 Identity(使用个人用户帐户)运行新的 Blazor 应用程序之前,您必须创建初始数据库迁移,并在目标数据库上运行它。
如果你查看迁移代码,有一个 Up 和一个 Down 方法,它们创建(Up 方法)和删除(Down 方法)数据库中的 Identity 表。
添加迁移后,但在将其应用到目标数据库之前,您可以编辑 .cs 迁移文件,删除或注释代码,因此迁移不会创建表,而是使用已创建的表。在文件中保留“insert into __migrations”语句,因为这个插入的行是 EF Core 用来测试应用程序当前迁移是否与应用到数据库的最后一次迁移一致。
当然,您的模型和现有的数据库表必须兼容。如果您对用户模型或任何其他身份方面进行了更改(例如更改密钥类型),则此方法可能无效。在这些情况下,您可以重命名已经存在的表,让标准迁移创建新表,然后使用 SQL 脚本将用户、角色、声明和其他身份信息从旧表迁移到新表。