【发布时间】:2020-02-15 11:24:55
【问题描述】:
我希望有人有类似的问题,可以提供建议。我研究了很长时间,但找不到明确的答案。
我的设置:
- 1 MsSQL 数据库(包含 System.Web.Security 的身份表)
- .Net Framework 中的许多 DLL(使用 System.Web.Security 登录)
- 多个不同的程序/应用程序调用 DLLs
- .Net Framework 中的 WebForms GUI(使用 System.Web.Security 登录)
我想要什么:
- 在 .net Core 或 .Net Framework 中使用 IdentityServer4
- 在 .Net Framework 中保留 DLL
- 在 .Net Core 中使用 WebApi
- 使用新的 GUI(例如在 Angular 或 Blazor 中)
- 在 WebForms 中将旧 GUI 与新 GUI 并行使用(直到新 GUI 完成)
我的问题: 我的 DLL 和应用程序使用 System.Web.Security 进行用户管理(登录等)。 .Net Core 不支持此命名空间,但将我所有的 DLL 更改为 .Net Core 对我来说是不可行的,因为这会导致太多更改。我想将它们保留在 .NetFramework 中。
我的主要问题之一:
- .Net Core 中的应用程序(例如 WebApi、IdentityServer4)和 .NetFramework 中的应用程序/Dll 能否使用相同的身份数据库(登录、成员资格等)。换句话说,如果在不同的应用程序/Dlls 中使用,“microsoft.aspnet.identity”和“microsoft.aspnetcore.identity”兼容(关于数据库)。
- 或者我是否必须在所有应用程序/dll 中使用身份命名空间之一才能兼容? (因此必须在所有应用/dll 中使用相同的框架)
我希望这足够简短和清楚地描述我的问题。如果有不清楚的地方请告诉我。
更新 我刚刚发现这篇帖子Microsoft.AspNet.Identity and Microsoft.AspNet.Identity.EntityFramework in .NET Standard 2.0 也许在所有 DLL 中使用 .Net 标准可能是一种选择。我会试试这个,看看它对我有用。但我仍然不明白“microsoft.aspnet.identity”和“microsoft.aspnetcore.identity”是否以及如何在 .Net 标准库中工作。
结果:我能够使用“Microsoft.AspNetCore.Identity”, .Net Standard 2.1 库中的“Microsoft.EntityFrameworkCore”(.Net Standard 2.1 和 net Core 3.0 支持 Microsoft.EntityFrameworkCore)。所以这是个好消息(我不必为了身份而将所有 DLL 迁移到 .Net Core。迁移到 .Net 标准就足够了)。 但是我不能在 .Net Framework DLL/App 中引用那个 .Net Standard 2.1 DLL,因为 .Net Framework 支持它到 .Net Standard 2.0...所以这并不能完全解决问题,但这似乎是最接近我想做的事情。
更新2
我准备为此更改大量代码。前任旧 WebApp 中的身份验证,以便它与 IdentityServer 对话并删除所有项目中与 System.Web(.Security) 相关的所有内容。 仍然让我感到困惑的一件事是“microsoft.aspnet.identity”与“microsoft.aspnetcore.identity”。我是否必须为所有项目选择其中一个,或者我可以混合这些命名空间(取决于项目的框架)但只保留一个数据库。
更新3 我标记了一个答案,因为它有助于回答我的基本问题(“它不可能”)。我将尝试实施它,并看到它在那里出现更多问题。 但如果有人对此主题有更多想法/经验,请随时在此处分享。
我使用的一些来源:
- 没有计划将 System.Web.Security 移植到 .Net Core:https://github.com/dotnet/core/issues/838
- 从 2012 年到 2013 年,数据库中的身份表已更改:What's the diff between dbo.aspnet_Users and dbo.aspnetUsers?
- 关于Membership provider不兼容aspnet .core的讨论:https://github.com/aspnet/AspNetCore/issues/1501
- 包含大量信息的迁移视频:https://www.youtube.com/watch?v=shn3gL_UJ38
- 关于身份和 .Net Core/Standard 的讨论与我的问题类似(但没有帮助,可能遗漏了一些东西):Identity in ASP.NET MVC Framework using Identity Core
- 将 .Net 迁移到 .Net Core 的指南:https://docs.microsoft.com/en-us/aspnet/core/migration/proper-to-2x/?view=aspnetcore-2.1
- “Microsoft.AspNet.Identity.Core”与“Microsoft.AspNetCore.Identity”:What is the difference between Microsoft.AspNet.Identity.Core and Microsoft.AspNetCore.Identity?
- IdentityServer4 也可以在 .NetFramework 中(不必在 .Net Core)https://leastprivilege.com/2017/01/15/platforms-where-you-can-run-identityserver4/ 谢谢!
【问题讨论】:
-
一些关于差异的信息:stackoverflow.com/questions/41140952/…
-
感谢您的回复,我已经看到了,但它只是解释了在 .Net Core 和 .Net Framework 中必须使用什么命名空间,而不是如果具有这两个命名空间的两个应用程序兼容。
标签: asp.net-core .net-core asp.net-identity identityserver4 identity