繁体   English   中英

ASP.NET Core 2所有用户密码重置为admin

[英]ASP.NET Core 2 all users password reset as admin

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

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

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

之后,您应该发送大量电子邮件,指示密码已被重置,并将用户引导至您的密码重置页面。 实际上,他们的行为就像是忘记了密码,然后完成提交电子邮件的正常过程,单击发送邮件中带有令牌的链接,然后设置新密码。

您还应该临时更新登录失败消息,以指示所有用户都必须重设密码,因此,如果有人错过了电子邮件,他们将知道为什么密码不起作用以及需要采取哪些措施来解决该问题。

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

根据经验,最简单的方法是使用应用程序为特定用户更改PasswordSalt从该更改后的用户那里获取PasswordHashPasswordSalt ,然后以相同组合对所有其他用户运行SQL UPDATE

它不是完全安全,但是可以完成工作。

或多或少:

-- 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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM