使用asp .net安全性更改密码

时间:2014-10-06 07:47:14

标签: c# asp.net security passwords

我的更改密码有问题,我有改变的方法:

public async Task ChangeMyPasswordAsync(string password, string oldPassword)
{
    var identity = await UserManager.FindAsync((Thread.CurrentPrincipal.Identity as ClaimsIdentity).Name, oldPassword);
    if (identity == null)
        throw new AuthenticationException();

    CheckError(await UserManager.RemovePasswordAsync(identity.Id));
    CheckError(await UserManager.AddPasswordAsync(identity.Id, password));
}

如果您在BBDD中显示该表,则密码的哈希值会更改,但当我尝试登录该应用程序时,我会看到以下行:

var user = await userManager.FindByNameAsync(context.UserName);
用户变量中的

具有旧密码的HASH,但是当我重置应用程序(再次按Shift + F5和F5)时,我无法使用新密码而不是旧密码......

有任何想法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您应该使用ChangePassword方法,而不是删除密码并添加新密码。

public async Task ChangeMyPasswordAsync(string password, string oldPassword)
{
    var identity = await UserManager.FindAsync((Thread.CurrentPrincipal.Identity as ClaimsIdentity).Name, oldPassword);
    if (identity == null)
        throw new AuthenticationException();

    CheckError(await UserManager.ChangePasswordAsync(identity.Id, oldPassword, password));
}

请参阅Microsoft文档:http://msdn.microsoft.com/en-us/library/dn497523(v=vs.108).aspx