我很好奇是否有办法在SubSonic中进行区分大小写的字符串比较?我有以下声明:
return new Select()
.From<Account>()
.Where("email").IsEqualTo(email)
.And("password").IsEqualTo(password)
.ExecuteSingle<Account>();
但是,它不会测试密码的情况(这是我需要做的)。理想情况下,密码将在存储之前加密,因此这不是问题。但是,除了使用直接SQL之外,有没有办法进行区分大小写的比较(BINARY)?
答案 0 :(得分:2)
SubSonic只会创建查询 - 它不会处理您的数据库所做的实际比较。如果您愿意,可以将数据库设置为区分大小写(它位于几乎所有数据库提供程序的设置中)。我会推荐这个。
如果这不是一个选项,那么您可以使用提供的电子邮件提取所有记录,然后使用String.Equals()在代码中运行字符串比较。
加密不是一个好主意 - 盐/哈希密码来做单向事情。如果您可以提取密码并解密您的系统是不安全的。
你仍然遇到同样的问题 - 所以在数据库中设置案例或者在代码中进行比较。
答案 1 :(得分:0)
不是一个好方法,但您可以在应用程序级别进行身份验证。您可以通过电子邮件获取帐户,然后在应用程序级别比较密码。性能杀手但是,它会起到作用。