.net - 使用一次登录进行多个应用程序身份验证
问题描述
我有一个在 asp.net 上运行的应用程序,带有用于用户管理的身份。
现在我正在生产另一个具有 asp.net core 和 Angular 7 技术的应用程序。
我曾尝试对两个应用程序使用相同的数据库进行登录,但由于 .net 和 .net 核心上的 Identity 具有不同的哈希算法,因此它不起作用。
我可以通过仅提供第一个应用程序的任何按钮链接来对 .net core 和 angular 7 应用程序使用我的 .net 应用程序验证吗?
当我像上面那样继续时,我发现下面列出了一些问题:-
- 如何避免用户直接访问第二个应用程序 .net 核心?
我该如何继续这种情况?
任何帮助将不胜感激。
解决方案
由于 ASP.NET Core Identity 对密码使用更安全的散列机制,默认情况下,您不能使用较旧的 ASP.NET Identity 访问同一数据库,因为它不理解新机制。然而,开箱即用的方法是将 ASP.NET Core Identity 与旧哈希一起使用,因为哈希实际上是版本化的,以允许从旧数据库轻松迁移。
如果您希望 ASP.NET Core Identity 和 ASP.NET Identity 使用同一数据库共存,则必须使用较旧的哈希算法,因为这是 ASP.NET Identity 唯一支持的一种。幸运的是,您可以将 ASP.NET Core Identity 配置为仅使用该算法本身。
配置在文档中进行了解释,如下所示:
services.Configure<PasswordHasherOptions>(option =>
{
option.CompatibilityMode = PasswordHasherCompatibilityMode.IdentityV2;
});
这将有效地降级 ASP.NET Core Identity 以使用旧算法,从而与 ASP.NET Identity 完全兼容。
推荐阅读
- ios - 在 SwiftUI 的 ZStack 中根据同级视图的大小配置边缘插图
- android - 尝试实现 ar 核心时无法加载 Renderable
- firebase - 我想在 Flutter 中使用来自 firebase 的十六进制代码
- google-bigquery - Extend BigQueryExecuteQueryOperator with additional labels using jinja2
- powershell - Typing fully qualified type names in powershell?
- maximo - Maximo Spatial: Configure text at top left corner of map?
- java - 有没有办法在不创建许多集合实例的情况下将集合映射到字符串?
- python - python pygame animation works without class but as soon as i put it into a class it doesnt want to work?
- clojure - Clojure 函数定义的参数中的双括号是什么意思?
- r - 如何使用 R 删除特定两列中为零或 NA 的行?