在EF Core Migration中更改数据

问题描述

我正在使用EF Core进行迁移,以使数据库保持最新状态。

假设我有这样的User实体:

class User
{
    /* Some other properties */
    public string Username { get; set; } // PK
    public string Password { get; set; }
}

我已经这样更改了:

class User
{
    /* Some other properties */
    public string Username { get; set; } // PK
    public string PasswordHash { get; set; }
    public string PasswordSalt { get; set; }
}

我正在使用IPasswordHelper(带有DI)进行密码加密:

interface IPasswordHelper
{
    string Hash(string rawPassword,string salt);
    string GenerateSalt();
}

还有PasswordOptions(也有DI):

class PasswordOptions
{
    // Pulled from user-secrets store
    // Used by the `IPasswordHelper.Hash` implementation
    public string Key { get; set; }
}

并以某种方式加密密码

var salt = _passwordHelper.GenerateSalt();

user.PasswordSalt = salt;
user.PasswordHash = _passwordHelper.Hash(password,salt);

在应用迁移时,我应该如何对数据库中的现有用户进行这种密码加密之王?

我认为解决方案可能看起来像这样:

  1. 在应用迁移之前获取所有UsernamePassword
  2. 应用结构表更改;
  3. 以与当前实现PasswordOptions相同的方式,为每个Password注入User并加密IPasswordHelper

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)