SubSonic: чувствительный к регистру тест? - PullRequest
0 голосов
/ 26 октября 2009

Мне интересно, есть ли способ сделать сравнение строк с учетом регистра в SubSonic? У меня есть следующее утверждение:

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

Тем не менее, он не проверяет регистр для пароля (что мне нужно сделать). В идеале, пароль должен быть зашифрован перед сохранением, так что это не будет проблемой. Но, кроме использования прямого SQL, есть ли способ сделать сравнение с учетом регистра (BINARY)?

Ответы [ 2 ]

2 голосов
/ 27 октября 2009

SubSonic просто создает запрос - он не обрабатывает фактическое сравнение, ваша БД делает. Вы можете настроить свою БД на регистр, если хотите, (она есть в настройках практически каждого провайдера БД). Я бы порекомендовал это.

Если это не вариант, вы можете извлечь все записи из предоставленного электронного письма, а затем выполнить сравнение строк в коде, используя String.Equals ().

Шифрование не очень хорошая идея - запишите / хэшируйте пароль для одностороннего действия. Если вы можете получить пароли и дешифровать, ваша система не защищена.

Однако вы все еще сталкиваетесь с той же проблемой - поэтому установите материал дела в БД или сравните в коде.

0 голосов
/ 04 сентября 2010

Не очень хороший способ, но вы можете выполнить аутентификацию на уровне приложения. Вы можете получить учетную запись по электронной почте, а затем сравнить пароль на уровне приложения. Производительность убийца, но это сделает свое дело.

...