ASP.net Инструмент веб-администрирования Забывает пользователей?

#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. спасибо, я проверю это, в моей программе в настоящее время нет ни одного из этих параметров вверху, не уверен, почему, но я это реализую и посмотрю, исправит ли это проблему, спасибо