2011-01-05 1 views
1

Я знаю, что это похоже на другие вопросы здесь, но я не думаю, что мой случай такой же, как у них.Зачем членство.ValidateUser возвращает false, когда пользователь одобрен и не заблокирован?

У меня есть веб-сайт, который использует AspNetSqlMembershipProvider для проверки пользователей. Я хотел бы использовать одну и ту же базу данных из консольного приложения. Согласно нескольким статьям в Интернете, я могу использовать класс System.Web.Security.Membership извне ASP.NET, скопировав соответствующие разделы из web.config в app.config. Это то, что я сделал.

Мое приложение для консоли может получить пользователя с запрошенным именем, и я могу подтвердить, что пользователь одобрен и не заблокирован, но ValidateUser возвращает false для правильной пары имени пользователя и пароля.

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

Проблема в том, что две части кода - веб-сайт и консольное приложение - находятся в разных сборках, а имя сборки или другое свойство используется во время хэширования паролей? В обоих случаях для свойства имени приложения установлено значение /.

Должен ли я продолжать этот подход или просто напрямую обращаться к базе данных и сам хэш-пароль?

+0

Вот один совет по устранению неполадок: создайте нового пользователя из приложения Windows, а затем попытайтесь проверить его учетные данные. Посмотрите, работает ли это. – gbs

+0

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

ответ

0

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

0

Посмотрите на эту статью:

http://www.theproblemsolver.nl/usingthemembershipproviderinwinforms.htm

Добавление параметров конфигурации членства в вашем app.config может помочь.

Надеюсь, это поможет!

+0

Я уже скопировал настройки конфигурации членства из своего web.config. Я могу использовать Memberhip.GetUser в своем консольном приложении для извлечения пользователя, чтобы я знал, что соединение с базой данных работает, но Memberhip.ValidateUser возвращает false. –