改变ASP.. NET身份密码
本文关键字:密码 身份 NET ASP 改变 | 更新日期: 2023-09-27 18:12:50
我有一个类,通过搜索电子邮件创建一个用户,并确保它不存在,它创建一个用户:
public async Task EnsureSeedDataAsync()
{
if (await _userManager.FindByEmailAsync("test@theworld.com") == null)
{
// Add the user.
var newUser = new CRAMSUser()
{
UserName = "test",
Email = "test@crams.com"
};
await _userManager.CreateAsync(newUser, "P@ssw0rd!");
}
}
我正在尝试创建另一个类来更改密码,使用相同的方法,但我很困惑如何创建一个currentUser对象传递到RemovePassword和AddPassword调用。这是我目前所看到的:
public async Task ChangePassword()
{
if (await _userManager.FindByEmailAsync("test@theworld.com") != null)
{
_userManager.RemovePasswordAsync(currentUser);
_userManager.AddPasswordAsync(currentUser, "newPassword");
}
}
有人可以指导我在正确的方向,因为我是新的,不知道如何转移currentUser对象,其中包含正在搜索的电子邮件。
FindByEmailAsyc
返回用户对象,您需要将其保存到一个变量并将其传递给其他userManager调用。此外,RemovePassword
和AddPassword
方法将您的User
对象的键值作为参数,而不是整个User
对象。
public async Task ChangePassword()
{
var currentUser = await _userManager.FindByEmailAsync("test@theworld.com")
if (currentUser != null)
{
_userManager.RemovePasswordAsync(currentUser.Id);
_userManager.AddPasswordAsync(currentUser.Id, "newPassword");
}
}
看我的答案在这个问题。它允许只使用userId &这对于允许管理员在一个事务中设置用户密码非常有用。
它可以归结为创建一个直接调用底层用户存储的新方法。