c# - 将纯文本密码迁移到 asp.net Identity 2.1

标签 c# asp.net-identity

我正在将现有站点移动到 mvc,令我困惑的一件事是用户数据的迁移,尤其是密码,这些密码以纯文本形式存储(是的,我知道)。现在将其余帐户信息移动到 aspnet 身份表很容易,但我现在需要对这些密码进行哈希处理,如果我必须使用 .net 应用程序进行哈希处理,我不确定如何在存储前正确地对它们进行哈希处理(使用 tsql),我需要通过输入普通密码来调用哪个类,它会给我一个哈希值?

谢谢

最佳答案

看来您的应用程序设置不适合进行完整迁移,因此我想到了一个简单的解决方案来充分利用 Identity 2.0 数据库和功能。

创建新的 Web 应用程序,然后创建一个方法来获取旧用户的纯文本登录凭据。下一页:

当您创建一个新的应用程序时,请查看帐户/注册文件中的代码。

这是你看到的:

    var manager = Context.GetOwinContext().GetUserManager<ApplicationUserManager>();
    var signInManager = Context.GetOwinContext().Get<ApplicationSignInManager>();
    var user = new ApplicationUser() { UserName = Email.Text, Email = Email.Text };
    IdentityResult result = manager.Create(user, Password.Text);
    if (result.Succeeded)
    {

    }

现在创建一个类来保存现有用户的所有属性,或者如果您想循环阅读器,您可以使用 SQLDataReader["columnName"]

因此复制该代码运行您的新方法:

   var ListOfUsers = MyMethodThatRetunsAllOldMembers();
   foreach member in ListOfUsers{
    var manager = Context.GetOwinContext().GetUserManager<ApplicationUserManager>();
    var signInManager = Context.GetOwinContext().Get<ApplicationSignInManager>();
    var user = new ApplicationUser() { UserName = Member.UserName, Email = Member.Email };
    IdentityResult result = manager.Create(member.LoginName, Member.Password);


    //Example: You can even add roles at the same time.
    var ra = new RoleActions();
    ra.AddUserToRoll(member.LoginName, Member.Email, userRole);

    }

这将为您的每个旧用户创建新的散列密码以及设置角色和用户 ID,从而有效地迁移您的数据库。

关于c# - 将纯文本密码迁移到 asp.net Identity 2.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27785856/

相关文章:

c# - Controller.OnException 是否在 ExceptionFilter 之前被调用?

c# - 从 C# 中的字符串解析多个 double

c# - 将 div 移动到另一个 div (ASP.NET MVC)

c# - 隐藏 Id 属性时自定义 IdentityRole<TKey, TUserRole> 失败

c# - ModelState.isValid()==False + 必需符号

asp.net-mvc - 只有当用户的用户名与数据库中的电子邮件完全相同时,我才能登录

c# - 从 Active Directory 获取 GUID 或 native GUID

C# 背景颜色改变

c# - ASP.NET 标识 : get all users in a role

c# - Identity 2.0 由管理员重置密码