所以我需要導入一堆用戶到我的基於ASP.NET身份的系統中,他的一些密碼很短(只有三個字符),並且超出了我的控制範圍。我需要導入這些密碼,以便現有用戶可以登錄並更改其密碼以滿足更嚴格的要求。ASP.NET身份密碼要求覆蓋我自己的
我認爲通過在我的ApplicationUserManager
類中配置PasswordValidator
屬性,我可以將導入密碼的要求設置爲允許我導入現有用戶的較低數字。
// Configure validation logic for passwords
appUserManager.PasswordValidator = new PasswordValidator
{
RequiredLength = 3,
RequireNonLetterOrDigit = false,
RequireDigit = false,
RequireLowercase = false,
RequireUppercase = false,
};
然而,當我輸入用戶和嘗試,並創建一個新的紀錄,我得到的IdentityResult
驗證錯誤。
IdentityResult result = manager.Create(newUser, importedUser.Password);
result.Errors = "Passwords must be at least 6 characters."
是沒可能覆蓋默認的身份要求?
這裏是整個ApplicationUserManager類以供參考:
public class ApplicationUserManager : UserManager<ApplicationUser>
{
public ApplicationUserManager(IUserStore<ApplicationUser> store)
: base(store)
{
PasswordValidator = new MinimumLengthValidator(3);
}
public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context)
{
var appDbContext = context.Get<ApplicationDbContext>();
var appUserManager = new ApplicationUserManager(new UserStore<ApplicationUser>(appDbContext));
// Configure validation logic for usernames
appUserManager.UserValidator = new UserValidator<ApplicationUser>(appUserManager)
{
AllowOnlyAlphanumericUserNames = true,
RequireUniqueEmail = false
};
// Configure validation logic for passwords
appUserManager.PasswordValidator = new PasswordValidator
{
RequiredLength = 3,
RequireNonLetterOrDigit = false,
RequireDigit = false,
RequireLowercase = false,
RequireUppercase = false,
};
appUserManager.EmailService = new Services.EmailService();
var dataProtectionProvider = options.DataProtectionProvider;
if (dataProtectionProvider != null)
{
appUserManager.UserTokenProvider = new DataProtectorTokenProvider<ApplicationUser>(dataProtectionProvider.Create("ASP.NET Identity"))
{
//Code for email confirmation and reset password life time
TokenLifespan = TimeSpan.FromHours(6)
};
}
return appUserManager;
}
}
我在我的項目中搜索了錯誤文本「密碼必須至少爲X個字符」,但根本找不到它。這使我相信它是Identity框架的內置需求。 – webworm
你可以在'IdentityResult result = manager.Create(newUser,importedUser.Password)'之前顯示代碼嗎?你是怎麼得到'經理'對象的? – tmg