2017-02-14 15 views
0

Войти страницаВозможно ли иметь аутентификацию на основе URL-адресов с помощью проверки подлинности на основе форм?

<form method='post' action='j_security_check'> 
 
\t <input type='text' name='j_username'> 
 
\t <input type='password' name='j_password'> 
 
</form>

содержание от web.xml

<web-app> 
 
\t <security-constraint> 
 
\t \t <web-resource-collection> 
 
\t \t \t <web-resource-name>User Auth</web-resource-name> 
 
\t \t \t <url-pattern>/auth/*</url-pattern> 
 
\t \t </web-resource-collection> 
 
\t \t <auth-constraint> 
 
\t \t \t <role-name>admin</role-name> 
 
\t \t \t <role-name>manager</role-name> 
 
\t \t </auth-constraint> 
 
\t </security-constraint> 
 
\t <login-config> 
 
\t \t <auth-method>FORM</auth-method> 
 
\t \t <form-login-config> 
 
\t \t \t <form-login-page>login.jsp</form-login-page> 
 
\t \t \t <form-error-page>error.jsp</form-error-page> 
 
\t \t </form-login-config> 
 
\t </login-config> 
 
</web-app>
аутентификации на основе

Форма работает отлично. Но если я обращаюсь к index.jsp напрямую с http://localhost:8080/index.jsp/j_security_check?j_username=admin&j_password=admin не работает.

Почему он не работает?

+1

'method = 'post'', но браузер отправляет запрос GET (хорошо из того, что я знаю). Если вы действительно этого хотите, вам нужно также управлять запросом GET. (но действительно ли это необходимо? Используйте страницу переадресации, если вам это действительно нужно) – AxelH

+0

Как вы используете метод = 'post' в своей форме, запрос обрабатывается как сообщение - однако, когда вы просто проходите параметры запроса напрямую, как вы указали, - запрос будет обрабатываться как get (который есть! = сообщение) и, следовательно, не будет работать – vegaasen

ответ

0

Поскольку вы ожидаете логин от запроса POST, вы не можете (исправить меня, если я ошибаюсь) отправить это прямо из URL-адреса браузера.

Решение будет заключаться в том, чтобы сделать другую страницу, loginRedirect.jsp, которая будет автоматически отправлять запрос POST.

Это будет заполнять <form> параметром, переданным в URL-адресе, и автоматически отправлять событие click. Все в Javascript.

Это может быть сделано на курсе login. Если в URL есть какой-то параметр, отправьте форму автоматически.

Используя этот answer в качестве источника, вы можете легко прочитать параметр (и проверить, есть ли он) и установить значения <input>. Затем сгенерируйте щелчок по кнопке submit.

 Смежные вопросы

  • Нет связанных вопросов^_^