ASP: Логин не аутентифицируется - PullRequest
1 голос
/ 15 января 2010

В настоящее время я изучаю аутентификацию с помощью поставщика SQLMembership. ASP: контроль входа не похоже на аутентификацию. Вот структура моего тестового сайта на моей локальной машине:

~/LoginTest/
  Default.aspx
  CreateUser.aspx
  lostpassword.aspx
  web.config
  /login/
    Login.aspx
    ProtectedStuff.aspx
    web.config

В файле web.config папки LoginTest я добавил следующие узлы:

  <connectionStrings>
    <add name="EvgSqlConnection" connectionString="connection string" />
  </connectionStrings>

  <authentication mode="Forms">
    <forms name="LoginTest" loginUrl="~/login/Login.aspx" path="/login"
      cookieless="UseCookies" />
  </authentication>


  <membership defaultProvider="mySqlProvider" userIsOnlineTimeWindow="15">
    <providers>
      <clear/>
      <add
        name="mySqlProvider"
        type="System.Web.Security.SqlMembershipProvider"
        connectionStringName="EvgSqlConnection"
        applicationName="LoginTest"
        enablePasswordRetrieval="false"
        enablePasswordReset="true"
        requiresQuestionAndAnswer="true"
        requiresUniqueEmail="true"
        passwordFormat="Hashed" /> 
    </providers>
  </membership>


  <roleManager enabled="true" defaultProvider="mySqlRoleProvider" cacheRolesInCookie="true" cookieProtection="All">
    <providers>
      <clear/>
      <add name="mySqlRoleProvider" applicationName="LoginTest" connectionStringName="EvgSqlConnection"
           type="System.Web.Security.SqlRoleProvider"/>
    </providers>
  </roleManager>

В файле web.config в папке входа в систему у меня есть следующее:

<configuration>
  <appSettings/>
  <connectionStrings/>
  <system.web>
    <authorization>
      <deny users="?" />
      <allow users="*" />
    </authorization>
  </system.web>
</configuration>

Итак, что я должен сделать из прочитанного, так это запретить пользователям доступ ко всему в папке входа в систему. В этом случае моим тестовым файлом является ProtectedStuff.aspx, который представляет собой не более чем страницу с меткой. В настоящее время происходит то, что все работает, кроме ASP: контроль входа в систему. В настоящее время я могу создать нового пользователя с ASP: CreateUserWizard на CreateUser.aspx. Я могу восстановить новый пароль, используя вопрос и ответ, настроенный с помощью элемента управления ASP: PasswordRecovery на lostpassword.aspx. Я могу ввести правильное имя и пароль в ASP: элемент управления Login на Login.aspx. Кажется, единственное, что не работает, - это настоящая аутентификация. Всякий раз, когда я пытаюсь перейти на ProtectedStuff.aspx, он возвращает меня к Login.aspx, как это и должно быть, когда вы не аутентифицированы. Кроме того, я могу ввести неправильное имя пользователя или неправильный пароль, и контроль входа жалуется. Я вижу своего пользователя на странице администрирования веб-сайта, я вижу, что ему назначена роль.

Нет никакого пользовательского кода за любым из этих элементов управления, все, что я сделал, скопировал в имя SqlProvider в атрибут MembershipProvider этих элементов управления. SQL Server 2000 настроен с пользователем NT AUTHORITY \ Network Service, у которого проверен полный доступ aspnet_Membership. файлы конфигурации, кажется, в порядке, все элементы управления, кажется, в состоянии правильно читать и записывать в базу данных, только элемент управления Login, кажется, не аутентифицирует пользователя. Что еще мне нужно искать?

1 Ответ

1 голос
/ 15 января 2010

Я бы начал с удаления атрибута path из элемента Forms :

Указывает путь для файлов cookie, выпущенных приложением. Значением по умолчанию является косая черта (/), поскольку большинство браузеров чувствительны к регистру и не будут отправлять файлы cookie обратно в случае несоответствия пути.

Если это все равно не поможет, я получу Fiddler и посмотрю, какие файлы cookie отправляются обратно клиенту и на сервер после входа в систему.

...