C# 创建Sitefinity用户密码哈希

C# 创建Sitefinity用户密码哈希,c#,asp.net,sitefinity,C#,Asp.net,Sitefinity,我正在寻求有关telerik sitefinity后端功能的帮助。我正在通过编程从自定义radgrid创建用户。我用于创建sitefinity用户的代码如下: public MembershipCreateStatus AddUser(UserModel model, Role role) { var userManager = UserManager.GetManager(); var profileManager = UserProfileManager.GetM

我正在寻求有关telerik sitefinity后端功能的帮助。我正在通过编程从自定义radgrid创建用户。我用于创建sitefinity用户的代码如下:

public MembershipCreateStatus AddUser(UserModel model, Role role)
{
       var userManager = UserManager.GetManager();
       var profileManager = UserProfileManager.GetManager()
       var roleManager = RoleManager.GetManager("AppRoles");

       MembershipCreateStatus status;

       userManager.Provider.SuppressSecurityChecks = true;

       var user = userManager.CreateUser(model.UserName, model.Password, model.Email,   
       model.SecretQuestion, model.SecretAnswer, true, null, out status);

       if(status == MembershipCreateStatus.Success)
       {
            roleManager.AddUserToRole(user, role);
            roleManager.SaveChanges();

            var profile = profileManager.CreateProfile(user, Guid.NewGuid(),  
             typeof(SitefinityProfile)) as SitefinityProfile;

                if (profile != null)
                {
                    profile.FirstName = model.FirstName;
                    profile.LastName = model.LastName;

                    //Set any Data Extended Properties below
                }

                profileManager.RecompileItemUrls(profile);
                profileManager.SaveChanges();
                userManager.SaveChanges();

        }

             return status
    }
这将允许我创建一个sitefinity用户,我可以看到该用户存储在sf_users表中。我遇到的问题是,如果用户忘记了密码,我需要一种查找和发送密码的方法。密码被散列并以加密格式保存在数据库的表中。我已经寻找了关于如何将密码格式更改为明文或类似内容的文档,但没有找到任何有用的文档


如果有人知道如何做到这一点,以便我可以将密码以明文形式保存在数据库中,那就太好了。

我不知道SiteFinity是如何工作的,但它似乎使用了
会员资格提供程序。因此,密码格式设置取决于所使用的提供程序,可以在
web.config
文件中更改

例如()



无论如何,以清晰的方式存储密码不是一个好的做法。相反,您应该为用户提供一个重置密码的界面。至少您应该生成一个新密码并向他们发送新密码(当然,他们必须能够更改密码)。这样,在将密码保存到数据库之前,可以对密码进行哈希运算。

Sitefinity成员资格提供程序的工作方式与SQL成员资格提供程序的工作方式类似。它支持三种模式-哈希(默认)、加密和清除。哈希格式是默认格式。更多信息请点击此处:

哈希密码是不可逆的,使用哈希密码格式无法实现所需的功能。相反,您可以通过使用Clear(强烈不推荐)或Encrypted(也不是一个好的安全实践)来实现这一点

但是,CMS允许您具有重置密码功能或检索密码。如果使用哈希格式,则重置;如果使用加密格式,则检索。本文解释了这两种方法:

<system.web>
<membership defaultProvider="SqlProvider">
  <providers>
    <add 
      name="SqlProvider" 
      type="System.Web.Security.SqlMembershipProvider" 
      passwordFormat="Clear" />
  </providers>
</membership>
</system.web>