Membership.FindUsersByEmail - подстановочные знаки SQL - PullRequest
4 голосов
/ 02 августа 2010

Я использую базу данных ASP .NET Membership для аутентификации пользователей в веб-приложении.

Пользователи входят в систему, используя свои адреса электронной почты, но что-то еще используется в поле Имя пользователя базы данных.

Итак, в форме входа я выбираю своих пользователей, используя Membership.FindUsersByEmail

Проблема заключается в том, что эта функция использует «LIKE» в SQL и что символы подстановки SQL не экранируются вэтот метод.

Таким образом, использование метода, скажем, a_df@example.com вернет имена пользователей для a_df@example.com и asdf@example.com (из-за того, что подчеркивание рассматривается как подстановочный знак).

Согласно вики, в адресах электронной почты принимаются кавычки,% и множество других символов.

Хотя я мог бы сделать что-то вроде

emailAddr = emailAddr.Replace("_", "[_]").Replace("%", "[%]")...

перед вызовом Членства.FindUsersByEmail, я думаю, что должен быть более чистый способ сделать это.

1 Ответ

3 голосов
/ 02 августа 2010

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

...