【发布时间】:2012-10-10 22:48:07
【问题描述】:
我不知道如何为 C# 数据模型制作自定义设置器。场景很简单,我希望我的密码使用 SHA256 函数自动加密。 SHA256 函数效果很好(我之前在无数项目中使用过)。
我已经尝试了几件事,但是当我运行 update-database 时,它似乎正在递归地做一些事情,我的 Visual Studio 挂起(不要发送错误)。请帮助我了解如何在模型中默认加密密码。
我已经尝试过的代码
public class Administrator
{
public int ID { get; set; }
[Required]
public string Username { get; set; }
[Required]
public string Password
{
get
{
return this.Password;
}
set
{
// All this code is crashing Visual Studio
// value = Infrastructure.Encryption.SHA256(value);
// Password = Infrastructure.Encryption.SHA256(value);
// this.Password = Infrastructure.Encryption.SHA256(value);
}
}
}
种子
context.Administrators.AddOrUpdate(x => x.Username, new Administrator { Username = "admin", Password = "123" });
【问题讨论】:
-
您是否尝试将访问器设置为自身? Password = XXX 会调用 Password 的 Set Accessor,它会再次调用它……如果让 VS 运行足够长的时间,我猜你会出现堆栈溢出。你有一个实际的字段来存储你的密码吗?
-
@Marc-AndréJutras 确实它递归地做了一些我怀疑的事情,但是我怎样才能做到这一点呢?
-
您用来存储密码的字段是什么?访问器不是字段,而是伪装的方法。
标签: c# .net entity-framework poco