#c# #asp.net #visual-studio-2010 #asp.net-membership
#c# #asp.net #visual-studio-2010 #asp.net-членство
Вопрос:
Эй, ребята, у меня странная проблема. Я использую встроенный ASP.NET Инструмент веб-администрирования, позволяющий пользователям входить на страницу, которую я создал для своей работы. Пока только 4 человека ежедневно заходят в инструмент. Логины работают отлично, но время от времени кто-то больше не может войти в систему. Это произошло примерно в 3 раза, поэтому я начинаю думать, что это не они просто забывают свои пароли.
После того, как это произошло в первый раз, я настроил средство восстановления пароля, но даже это не работает. Ввод имени пользователя просто приводит к тому, что «Мы не смогли получить доступ к вашей информации. Пожалуйста, попробуйте еще раз «. ошибка, которая странная, потому что, когда я захожу в серверную часть, пользователь все еще там. Итак, я должен удалить пользователя и создать его заново, что пока работает, потому что мы не используем логины ни для чего, кроме входа в систему, никакая информация не связана с пользователями. Это может стать проблемой в будущем, если мы расширим его.
Мне было интересно, сталкивался ли кто-нибудь с подобной проблемой или знает, в чем может быть проблема? Я пытался исследовать его, но я не мог найти много, или я просто искал неправильные условия поиска. Я использую Visual Studio 2010 Express, и все формы входа являются встроенными элементами управления с настройками по умолчанию.
Дайте мне знать, если вам понадобится какая-либо другая дополнительная информация.
Из файла web.config:
<identity impersonate="true"/>
<authentication mode="Forms">
<forms loginUrl="~/marcalendar/login.aspx"/>
</authentication>
<authorization>
<allow roles="admin" />
<allow roles="users" />
<deny users="?"/>
</authorization>
Комментарии:
1. Интересно! Не могли бы вы добавить к вопросу
<Membership>
раздел в Web.Config для сайта? Мне было бы интересно посмотреть, как настроен поставщик. Они могут превышатьMaxInvalidPasswordAttempts
ИЛИ попадать вPasswordAttemptWindow
(если они настроены)2. Я добавил, что для вас я никогда не добавлял раздел членства, возможно, в этом проблема? может быть, он просто установлен по умолчанию?
3. Если вы используете членство в ASP с настройками по умолчанию, hte
<Membership>
и<Providers>
теги должны быть в web.config на верхнем уровне вашего сайта (по умолчанию). Я опубликую ответ, чтобы посмотреть, смогу ли я уточнить немного лучше.
Ответ №1:
Я думаю, что наиболее вероятная проблема здесь заключается в том, что ваши пользователи блокируются (конфигурация ASP-членства по умолчанию не дает четкой информации о том, почему попытка входа в систему завершается неудачей, просто она не удалась), а не aspnetdb каким-то образом теряет / портит информацию о пользователе — хотя, я думаю, что все возможновозможно :-).
Посмотрите в файле Web.Config на корневом уровне вашего проекта. Вы должны увидеть что-то вроде этого:
<configuration>
...Some other stuff here...
<system.web>
...Some other stuff here...
<membership>
<providers>
<clear/>
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="4" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/"/>
</providers>
</membership>
Это <add name=.../>
важная часть. Вы видите множество параметров настройки для ваших настроек входа. Важными из них являются
passwordAttemptWindow="10"
, ИmaxInvalidPasswordAttempts="5"
.
Это означает, что если пользователь неправильно вводит свой пароль 5 раз в течение 10 минут, он заблокирован (вы можете программно проверить это с помощью MembershipUser .Свойство IsLockedOut).
Если это проблема, вам необходимо реализовать метод MembershipUser.UnlockUser (дайте мне знать, если вам понадобится помощь и с этой частью). Тогда вы можете просто использовать такой код:
MembershipUser usr = Membership.GetUser(userName); //userName is a string variable containing the username you're trying to unlock
usr.UnlockUser();
Если это не проблема, дайте мне знать, и я смогу отредактировать / удалить этот ответ.
Комментарии:
1. спасибо, я проверю это, в моей программе в настоящее время нет ни одного из этих параметров вверху, не уверен, почему, но я это реализую и посмотрю, исправит ли это проблему, спасибо