我正在使用Salt在MVC 4.0中创建登录功能。对于每个注册用户,Salt是不变的,因为安全性不一定是一流的。现在要创建哈希(与数据库中的哈希进行比较),我需要从数据库中检索特定用户的salt,并使用已插入的密码创建哈希。我使用Nhibernate进行数据库流量操作。然而,由于我对Nhibernate相当新,我不知道如何将盐作为字符串检索,我试过这个:
var salt = session.QueryOver<Translator>()
.Where(x => x.EmailAddress == emailAddress)
.Select(x => x.Salt)
.List()
.ToString();
x。是映射,emailAddress
是函数中的参数。
该错误提到salt值(它实际显示字符串)不是models.translator类型,不能在此泛型集合中使用。
答案 0 :(得分:2)
获取整个实体并获得.Salt
属性并不昂贵,因此您可以安全地忘记Select
部分。
但是,在条件API中,我知道您可以在查询中使用.SetProjection()
来获取单个属性,然后调用.UniqueResult<string>()
。
使用QueryOver
,您可以尝试.List<string>()
。不要在列表中调用.ToString()
,而是使用.Single()
获取列表中唯一的元素。