实体框架:将密码保存为SecureString

时间:2011-09-01 15:10:44

标签: entity-framework entity-framework-4.1 ef-code-first

在我的User类中,我有一个SecureString密码。为了保存密码,我添加了UserPassword属性。

示例代码:

internal partial class User
{
    public string ID { get; set; }

    private string _password;
    public SecureString Password 
    {
        set { _password = SomePasswordHashing(value.ToString); }
    }

    public string UserPassword 
    {
        get { return _password; }
        set { _password = value; }
    }
}

对于保存/检索UserPassword,此属性是否需要公开?

有没有办法不加载UserPassword属性(例如,在搜索用户时,我想排除加载所有用户的密码)?

1 个答案:

答案 0 :(得分:2)

  

要保存/检索UserPassword,此属性是否需要   公开吗?

是。 EF-Code首先需要公开属性。

  

有没有办法不加载UserPassword属性(例如何时   搜索用户,我想排除加载所有用户'   密码)?

您可以在搜索排除密码时转换结果

var users = db.Users.Where(/* */).Select(u => new User{Name = u.Name});

或者使用没有密码属性的DTO类并返回DTO类而不是模型对象。