2014-10-06 3 views
0

У меня есть проблема с паролем изменения, у меня есть метод, чтобы изменить:Изменение пароля с безопасностью ASP .NET

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

в переменном пользователе есть хэш старого пароля, но когда я переустановить приложение (Shift + F5 и F5 еще раз) я не могу использовать новый пароль и не старый ...

Любая идея пожалуйста ??

Спасибо!

ответ

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

+0

В моем контексте ваше решение не является действительным, спасибо за вашу помощь – David