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