Вход в систему на основе формы Apache обнаруживает неверные учетные данные ⇐ Apache
Вход в систему на основе формы Apache обнаруживает неверные учетные данные
У меня установлен Apache 2.4 (httpd) на Red Hat 9.0. У меня есть базовая аутентификация, работающая с ldap, и собственная форма входа.
Мой httpd.conf содержит следующее
Форма типа аутентификации Имя авторизации «Логин» AuthFormProvider ldap AuthFormLoginRequiredLocation "/login.shtml?req=%{REQUEST_URI}" AuthLDAPURL "ldap://DC:389/OU=Users,dc=x,dc=com?sAMAccountName?sub?(objectClass=*)" Требовать действительного пользователя Имя пользователя AuthLDAPBindDN AuthLDAPBindPassword PASSWORD Сеанс включен SessionCookieName путь к сеансу =/ SetHandler обработчик входа в форму AuthFormLoginRequiredLocation «badlogin.shtml» SetEnvIf Referer ^.*req=(.*)&?$ req=$1 AuthFormLoginSuccessLocation %{ENV:req} AuthFormProvider ldap AuthLDAPURL "ldap://DC:389/OU=Users,dc=x,dc=com?sAMAccountName?sub?(objectClass=*)" Требовать действительного пользователя Имя пользователя AuthLDAPBindDN AuthLDAPBindPassword PASSWORD Форма типа аутентификации Имя авторизации «Логин» Сеанс включен SessionCookieName путь к сеансу =/ и у меня есть базовая форма в login.html
Имя пользователя: Пароль: Директива отправляет вас на страницу, которую вы изначально запрашивали, после входа в систему через страницу login.html.
Если вы введете неверные учетные данные, директива отправит вас на badlogin.html, который по сути такой же, как и login.html, но содержит фразу «ПЛОХИЕ КРЕДИ, попробуйте еще раз». красный шрифт.
Однако, если вы правильно указали учетные данные, вам потребуется do-login.html ... 302 Found .. говоря: Документ перемещен .. с «здесь» гиперссылка на самого себя. При нажатии на эту ссылку появляется сообщение «Метод не разрешен. Запрошенный метод GET не разрешен для этого URL-адреса».
do-login стал здесь реферером.
Как заставить badlogin.html перенаправить меня на легальную страницу? Я полагаю, что первоначальный реферер больше не известен, поэтому /private/index.shtml будет достаточно хорошим местоположением.
До того, как я начал использовать "?req=%{REQUEST_URI}" и "SetEnvIf Referer", я просто использовал
AuthFormLoginRequiredLocation "/login.shtml" и AuthFormLoginSuccessLocation "/private/index.shtml"
Поэтому независимо от того, какую страницу вы изначально выбрали, после успешного входа в систему вы всегда оказывались на странице «/private/index.shtml». Мне это не нравится. Если вы выбрали /private/pageA.shtml или /private/pageB.shtml, вы всегда оказывались на /private/index.shtml. С помощью приведенных выше директив, если вы выберете /private/pageB.shtml, вы перейдете на /private/pageB.shtml после входа в систему. Но не в том случае, если вы ошибетесь в кредитах и исправите их при следующей попытке.
Я пытался, но безуспешно:
AuthFormLoginRequiredLocation "/badlogin.shtml?req=%{REQUEST_URI}" Возможно, есть способ условно установить AuthFormLoginSuccessLocation ?
Просто пытаюсь учесть ситуацию, когда пользователь не получает правильные кредиты с первого раза.
заранее спасибо
У меня установлен Apache 2.4 (httpd) на Red Hat 9.0. У меня есть базовая аутентификация, работающая с ldap, и собственная форма входа.
Мой httpd.conf содержит следующее
Форма типа аутентификации Имя авторизации «Логин» AuthFormProvider ldap AuthFormLoginRequiredLocation "/login.shtml?req=%{REQUEST_URI}" AuthLDAPURL "ldap://DC:389/OU=Users,dc=x,dc=com?sAMAccountName?sub?(objectClass=*)" Требовать действительного пользователя Имя пользователя AuthLDAPBindDN AuthLDAPBindPassword PASSWORD Сеанс включен SessionCookieName путь к сеансу =/ SetHandler обработчик входа в форму AuthFormLoginRequiredLocation «badlogin.shtml» SetEnvIf Referer ^.*req=(.*)&?$ req=$1 AuthFormLoginSuccessLocation %{ENV:req} AuthFormProvider ldap AuthLDAPURL "ldap://DC:389/OU=Users,dc=x,dc=com?sAMAccountName?sub?(objectClass=*)" Требовать действительного пользователя Имя пользователя AuthLDAPBindDN AuthLDAPBindPassword PASSWORD Форма типа аутентификации Имя авторизации «Логин» Сеанс включен SessionCookieName путь к сеансу =/ и у меня есть базовая форма в login.html
Имя пользователя: Пароль: Директива отправляет вас на страницу, которую вы изначально запрашивали, после входа в систему через страницу login.html.
Если вы введете неверные учетные данные, директива отправит вас на badlogin.html, который по сути такой же, как и login.html, но содержит фразу «ПЛОХИЕ КРЕДИ, попробуйте еще раз». красный шрифт.
Однако, если вы правильно указали учетные данные, вам потребуется do-login.html ... 302 Found .. говоря: Документ перемещен .. с «здесь» гиперссылка на самого себя. При нажатии на эту ссылку появляется сообщение «Метод не разрешен. Запрошенный метод GET не разрешен для этого URL-адреса».
do-login стал здесь реферером.
Как заставить badlogin.html перенаправить меня на легальную страницу? Я полагаю, что первоначальный реферер больше не известен, поэтому /private/index.shtml будет достаточно хорошим местоположением.
До того, как я начал использовать "?req=%{REQUEST_URI}" и "SetEnvIf Referer", я просто использовал
AuthFormLoginRequiredLocation "/login.shtml" и AuthFormLoginSuccessLocation "/private/index.shtml"
Поэтому независимо от того, какую страницу вы изначально выбрали, после успешного входа в систему вы всегда оказывались на странице «/private/index.shtml». Мне это не нравится. Если вы выбрали /private/pageA.shtml или /private/pageB.shtml, вы всегда оказывались на /private/index.shtml. С помощью приведенных выше директив, если вы выберете /private/pageB.shtml, вы перейдете на /private/pageB.shtml после входа в систему. Но не в том случае, если вы ошибетесь в кредитах и исправите их при следующей попытке.
Я пытался, но безуспешно:
AuthFormLoginRequiredLocation "/badlogin.shtml?req=%{REQUEST_URI}" Возможно, есть способ условно установить AuthFormLoginSuccessLocation ?
Просто пытаюсь учесть ситуацию, когда пользователь не получает правильные кредиты с первого раза.
заранее спасибо
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение