C# ASP.NET Core 2所有用户密码重置为管理员

C# ASP.NET Core 2所有用户密码重置为管理员,c#,sql,asp.net-mvc,asp.net-core,asp.net-identity,C#,Sql,Asp.net Mvc,Asp.net Core,Asp.net Identity,我正在寻找一种可能性,为数据库中的所有用户重置密码。有可能吗?到目前为止,我所发现的只是为用户自己启用密码重置,但这不是我需要的 我需要强制老用户为我们的应用程序重新创建密码。也许有更好的解决方案?如果您试图将密码重置为针对所有用户的特定密码,则需要使用哈希密码和新密码的密码盐更新asnetUsers表 根据经验,最简单的方法是使用应用程序为特定用户更改密码,从更改后的用户处获取密码哈希和密码salt,然后对具有相同组合的所有其他用户运行SQL更新 虽然不太安全,但它能起作用 或多或少: --

我正在寻找一种可能性,为数据库中的所有用户重置密码。有可能吗?到目前为止,我所发现的只是为用户自己启用密码重置,但这不是我需要的


我需要强制老用户为我们的应用程序重新创建密码。也许有更好的解决方案?

如果您试图将密码重置为针对所有用户的特定密码,则需要使用哈希密码和新密码的密码盐更新
asnetUsers

根据经验,最简单的方法是使用应用程序为特定用户更改密码,从更改后的用户处获取
密码哈希
密码salt
,然后对具有相同组合的所有其他用户运行SQL
更新

虽然不太安全,但它能起作用

或多或少:

-- Update User using App, and get the ID
DECLARE @Id INT = XX -- Your app userid here
DECLARE @PasswordHash NVARCHAR(MAX), @PasswordSalt NVARCHAR(MAX)

-- get the password hash and salt for the changed user
SELECT @PasswordHash = PasswordHash, @PasswordSalt = PasswordSalt 
FROM aspnetUsers
WHERE Id = @Id

-- Update the other users with the same password and salt
UPDATE aspnetUsers SET
    PasswordHash = @PasswordHash,
    PasswordSalt = @PasswordSalt
WHERE
    Id IN (---whatever you need to filter by)

如果试图将密码重置为所有用户的特定密码,则需要使用哈希密码和新密码的密码盐更新
asnetUsers

根据经验,最简单的方法是使用应用程序为特定用户更改密码,从更改后的用户处获取
密码哈希
密码salt
,然后对具有相同组合的所有其他用户运行SQL
更新

虽然不太安全,但它能起作用

或多或少:

-- Update User using App, and get the ID
DECLARE @Id INT = XX -- Your app userid here
DECLARE @PasswordHash NVARCHAR(MAX), @PasswordSalt NVARCHAR(MAX)

-- get the password hash and salt for the changed user
SELECT @PasswordHash = PasswordHash, @PasswordSalt = PasswordSalt 
FROM aspnetUsers
WHERE Id = @Id

-- Update the other users with the same password and salt
UPDATE aspnetUsers SET
    PasswordHash = @PasswordHash,
    PasswordSalt = @PasswordSalt
WHERE
    Id IN (---whatever you need to filter by)

如果您需要执行全局密码重置,那么您应该创建一个函数来生成随机加密安全密码,并简单地将每个用户的密码更改为这些随机密码(不仅仅是一个,而是为每个用户生成一个密码)。这实际上会导致全局锁定,因为没有用户能够登录,因为他们不知道这个密码

之后,您应该发送一封群发电子邮件,指出密码已重置,并将用户引导到您的密码重置页面。基本上,他们会表现得好像忘记了密码一样,完成提交电子邮件的正常过程,单击发送电子邮件中带有令牌的链接,然后设置新密码


您还应临时更新登录失败消息,以指示所有用户必须重置其密码,这样,如果有人错过了电子邮件,他们将知道其密码不起作用的原因,以及需要如何修复密码。

如果您需要进行全局密码重置,您应该做的是创建一个函数,生成随机加密安全密码,并简单地将每个用户的密码更改为这些随机密码(不仅仅是一个,而是为每个用户生成一个密码)。这实际上会导致全局锁定,因为没有用户能够登录,因为他们不知道这个密码

之后,您应该发送一封群发电子邮件,指出密码已重置,并将用户引导到您的密码重置页面。基本上,他们会表现得好像忘记了密码一样,完成提交电子邮件的正常过程,单击发送电子邮件中带有令牌的链接,然后设置新密码


您还应该临时更新登录失败消息,以指示所有用户都必须重置密码,这样,如果有人错过了电子邮件,他们将知道为什么他们的密码不起作用,以及他们需要做什么来修复它。

您所说的“重置密码”到底是什么意思?你想忽略几十年的安全研究和最佳实践,将所有用户的密码重置为“Welcome123”并发送给他们吗?你所说的“重置密码”到底是什么意思?你想忽略几十年来的安全研究和最佳实践,将所有用户密码重置为“Welcome123”并发送给他们吗?谢谢!我已经用这个解决方案结束了,现在正在更新数据库。谢谢!我已经用这个解决方案结束了,现在正在更新数据库。没问题。我意识到,被接受的解决方案是一个更安全的选择。这是一个我们在测试和开发数据库上使用的快速脏版本。它能工作,而且又快又脏。在将其应用于生产环境之前,人们应该意识到这一点。没问题。我意识到,被接受的解决方案是一个更安全的选择。这是一个我们在测试和开发数据库上使用的快速脏版本。它能工作,而且又快又脏。在将其应用于生产环境之前,人们应该意识到这一点。