В настоящее время я изучаю аутентификацию с помощью поставщика 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, кажется, не аутентифицирует пользователя. Что еще мне нужно искать?