首页 > 解决方案 > 在 kentico 10 中使用 PBKDF2 加密设置密码

问题描述

我必须从 Excel 表中上传大约 500 个用户到表格 CMS.User(FirstName、LastName、UserName、Email、UserPassword 和 UserPasswordFormat)中。

如何加密密码并保存在数据库中?

var newUser = new UserInfo
{
    UserName = userDto.Email,
    UserEnabled = true,
    FirstName = userDto.FirstName,
    LastName = userDto.LastName,
    FullName = userDto.FirstName + " " + userDto.LastName,
    Email = userDto.Email,
    UserPasswordFormat = userDto.UserPasswordFormat,                
    SiteIndependentPrivilegeLevel = CMS.Base.UserPrivilegeLevelEnum.None
};

var newUserSettings = newUser.UserSettings ?? new UserSettingsInfo();

newUser.SetValue("UserPassword", userDto.UserPassword);

newUserSettings.UserPhone = userDto.PhoneNumber;

UserInfoProvider.SetUserInfo(newUser);

UserInfoProvider.AddUserToSite(newUser.UserName, site.SiteName);

标签: c#asp.netkenticopassword-encryption

解决方案


在您的代码中,而不是

newUser.SetValue("UserPassword", userDto.UserPassword);

你应该使用:

UserInfoProvider.SetUserInfo(newUser); // saves user to DB
UserInfoProvider.SetPassword(newUser, userDto.UserPassword); // saves hashed password

Kentico 也使用 CMSHashStringSalt 应用程序设置来散列密码。


推荐阅读