问题描述
我正在使用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);
在应用迁移时,我应该如何对数据库中的现有用户进行这种密码加密之王?
我认为解决方案可能看起来像这样:
- 在应用迁移之前获取所有
Username
和Password
; - 应用结构表更改;
- 以与当前实现
PasswordOptions
相同的方式,为每个Password
注入User
并加密IPasswordHelper
。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)