SubSonic: Тест с учетом регистра?

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

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

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


person StephenPAdams    schedule 26.10.2009    source источник


Ответы (2)


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

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

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

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

person Community    schedule 27.10.2009

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

person vardars    schedule 04.09.2010