Asp.net

使用 ASP.NET Identity 2 檢查密碼是否有效

  • January 18, 2021

在我的網站上,我讓管理員可以在不輸入舊密碼的情況下更改某人的密碼。我執行以下操作:

userManager.RemovePassword(oldUser.Id);
userManager.AddPassword(oldUser.Id, newPassword);
        

但是,只有當 newPassword 字元串符合配置文件中設置的密碼策略時,才會更改密碼。當新密碼不滿足要求時,AddPassword 似乎靜默失敗。

除了明顯的“手動程序”(檢查有多少個大寫/小寫字元,多少個數字等)之外,是否有一些簡單的方法可以根據目前策略檢查密碼是否有效。我正在尋找類似的東西

bool valid = IsPasswordValid("pass");

您可以使用該PasswordValidator.ValidateAsync()方法來確定密碼是否符合您定義的標準UserManager

var valid = (await UserManager.PasswordValidator.ValidateAsync("pass")).Succeeded;

您可以簡單地使用 PasswordValidator 來檢查密碼的有效性和錯誤,如下所示:

var passwordValidator = new PasswordValidator<IdentityUser>();
var result = await passwordValidator.ValidateAsync(_userManager, null, "your password here");

if (result.Succeeded)
{
   // Valid Password
}
else
{
   // Check the error messages in result.Errors
}

上述解決方案適用於 Asp.Net Core 2.2

引用自:https://stackoverflow.com/questions/37144719