0

我很好奇是否有办法在 SubSonic 中进行区分大小写的字符串比较?我有以下声明:

return new Select()
               .From<Account>()
               .Where("email").IsEqualTo(email)
               .And("password").IsEqualTo(password)                   
               .ExecuteSingle<Account>();

但是,它不会针对密码的大小写进行测试(这是我需要做的)。理想情况下,密码在存储之前会被加密,所以这不是问题。但是,除了使用直接 SQL 之外,还有没有办法进行区分大小写的比较(BINARY)?

4

2 回答 2

2

SubSonic 只是创建查询 - 它不处理实际比较,您的数据库会处理。如果您愿意,您可以将您的数据库设置为区分大小写(它在几乎每个数据库提供商的设置中)。我会推荐这个。

如果这不是一个选项,那么您可以使用提供的电子邮件提取所有记录,然后使用 String.Equals() 在代码中运行字符串比较。

加密不是一个好主意-对密码进行加盐/散列以做单向操作。如果您可以提取密码并解密您的系统是不安全的。

不过,您仍然遇到同样的问题 - 所以在数据库中设置案例内容或在代码中进行比较。

于 2009-10-27T01:30:05.257 回答
0

这不是一个好方法,但您可以在应用程序级别进行身份验证。您可以通过电子邮件获取帐户,然后在应用程序级别比较密码。性能杀手,但是,它会成功的。

于 2010-09-04T10:07:14.317 回答