gpt4 book ai didi

asp.net-mvc - SignInManager.PasswordSignInAsync 总是返回失败

转载 作者:行者123 更新时间:2023-12-04 00:33:06 24 4
gpt4 key购买 nike

将我的应用程序从 .NET Framework 4.6 转换为 .NET Core 2 后,我对数据库进行了请求的更改以支持新的身份模型,即添加到 AspNetUsers 和新表的几个字段。

记录在 .NET Core 中工作正常。

现在我需要返回到 .NET Framework 4.6 应用程序,当我尝试登录时,SignInManager.PasswordSignInAsync 总是返回失败。
我使用 SQL Profiler 检查了查询,我看不到任何错误的查询(运行的任何查询都没有错误)。

CREATE TABLE [dbo].[AspNetUsers](
[Id] [nvarchar](128) NOT NULL,
[UserKeyId] [bigint] NOT NULL,
[Email] [nvarchar](256) NULL,
[EmailConfirmed] [bit] NOT NULL,
[PasswordHash] [nvarchar](max) NULL,
[SecurityStamp] [nvarchar](max) NULL,
[PhoneNumber] [nvarchar](max) NULL,
[PhoneNumberConfirmed] [bit] NOT NULL,
[TwoFactorEnabled] [bit] NOT NULL,
[LockoutEndDateUtc] [datetime] NULL,
[LockoutEnabled] [bit] NOT NULL,
[AccessFailedCount] [int] NOT NULL,
[UserName] [nvarchar](256) NOT NULL,
[CreationDate] [datetimeoffset](7) NOT NULL DEFAULT ('1900-01-01T00:00:00.000'),
[FirstName] [nvarchar](max) NULL,
[LastName] [nvarchar](max) NULL,
[NormalizedEmail] [nvarchar](256) NULL,
[NormalizedUserName] [nvarchar](256) NULL,
[ConcurrencyStamp] [nvarchar](max) NULL,
[LockoutEnd] [datetimeoffset](7) NULL,
CONSTRAINT [PK_dbo.AspNetUsers] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

失败的地方(即结果 = SignInStatus.Failure):
var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: true);

在 AspNetUsers 表中:电子邮件 = 用户名

我认为我不需要回滚对数据库所做的更改,那么如何找出 PasswordSignInAsync 返回失败的确切原因?

最佳答案

问题出在哈希上。
我在 .NET Framework 4.6 中的旧应用程序使用的是 Identity 2.0。
当我将我的应用程序转换为 .NET Core 2 时,我实际上创建了一个新项目并逐个文件迁移代码,因此它使用了更强大的 Identity 3.0。作为一个不太好的功能,当您登录时会重写散列,因此密码散列是用 Identity 3.0 重写的,我的旧应用程序无法解码。

但是,您可以选择设置 .NET Core 以阻止使用 Identity 3.0。

你只需要在 Startup.cs 的 ConfigureServices 添加这一行:

services.Configure<PasswordHasherOptions>(options =>
options.CompatibilityMode = PasswordHasherCompatibilityMode.IdentityV2
);

关于asp.net-mvc - SignInManager.PasswordSignInAsync 总是返回失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47850720/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com