如何使用标识表为现有 Azure 数据库创建 ASP.NET 核心 Web 应用程序

How to create ASP.NET Core web application for existing Azure database with identity tables

我有一个连接到后端的现有 Xamarin 移动应用程序,它是 Azure 中托管的 .NET Framework 4.7.1 Web 应用程序。它只包含Azure中推送通知中心的逻辑和链接,同时还为移动应用程序进行新用户注册和登录认证。

我研究并意识到将 .NET Framework 4.7.1 现有 Web API 升级到 .NET Core 3.1 / Net 6 Web 不是一个好主意(或者甚至不能)API.

我正在考虑创建一个新的 .NET Core 3.1/Net 6 项目,该项目还将连接到现有数据库,并在这个新项目中继续为移动设备添加功能,例如密码重置功能,更现代并且易于维护。两个 web api 都可以运行(这样我就可以避免更新移动 azure notfication 包和集线器,如果我修改了原始后端项目,就会出现这种情况)

多部分问题:

这种方法好吗?如果不能,还有什么选择?

现有数据库有 Microsoft Identity 表,所以当我创建新的 NET Core 3.1 / Net 6 项目时,我是否可以 select 使用 Microsoft Identity 进行身份验证作为选项?在构建 azure 现有数据库连接字符串时,这是否会自动将身份验证逻辑挂钩到具有现有表的新项目中(即使用户表的自定义名称略有修改并在创建时在以前的项目中添加了一些列)?

作为答案发布(因为评论太长)

首先,您可以从 .NET 4.7 升级到 NETCore,我最近已经这样做了(4.7.2 到 NetCore5)。 前提是您使用的不是尚未移植到 NetCore 的库或包。 例如我的项目是针对 EF6 的,我必须先将整个项目迁移到 EFCore5。然后更改 DbContext 中的代码,重新创建数据库迁移,修复一些查询(尤其是 GroupBy 查询)等。最后我可以升级到 NetCore5。

关于你问题的第二部分,我认为为你的某些功能单独 API 不是个坏主意,但如果升级现有项目是可行的,我个人会避免。 (也许重新开始并逐渐移植其余代码?)

还要记住的一件事是,AspnetCore Identity 模式可能与 Aspnet Identity 模式不同(只是一个想法,不确定)

我最近将自定义用户和身份验证系统迁移到了 AspnetCore Identity,我将 IdentityServer4 与 AspnetCore Identity 一起使用。 我不确定你是如何验证用户等的,但我已经在使用 IdentityServer4,当我用 AspnetCore Identity UI/Authentication 搭建它时,它创建了 UIs/Business 验证逻辑(我不得不调整它位,并且必须对其进行自定义以继续使用我们的移动应用程序)

此外,我不得不手动将我们的用户从自定义用户 table 迁移到新的 Identity.Users table。我创建了一个实用程序应用程序(控制台应用程序),它从现有用户 table 中读取用户并在 Microsoft --> Identity tables.

下创建它们

我想我花了大约一个月的时间从

升级

1 - EF6 --> EfCore

2 - Net471 --> NetCore5

3 - 自定义用户 --> AspnetCore Identity