2016-03-02 9 views
0

Я использую j_security_check как часть механизма JAAS на сервере tomcat/tomEE.j_security_check не работает, когда <Context path = "">

Я в настоящее время контекст называется «администратор», что есть процесс входа в систему в виде отдельной страницы (login.html), и что Логин страница имеет форму, подобную этой: <form action="j_security_check" method="post"> с надлежащие входы отправки j_username & свойства j_password ,

Все работает отлично.

Для уточнения Мое приложение доступно, например. «Www.myapp.com/admin»

Теперь я попросил, чтобы добавить еще один веб-приложение в корне домена, «www.myapp.com», поэтому я добавить это в моем conf/server.xml:

`<Context 
    docBase="ROOT" 
    path="" 
    reloadable="true" 
/>` 

ROOT.war содержит webapp, который должен находиться в доменной зоне www.myapp.com/.

То, что я пытаюсь сделать, это добавить механизм j_security_check в этом контексте, а также (это должно быть сделано в AJAX вместо <form> по причинам UX).

Обратите внимание, что мне удалось получить файлы cookie в обоих контекстах, но когда я делаю вызов www.myapp.com/j_security_check, я всегда получаю ответ 408 Request Timeout.

Как я могу выполнить вызов j_security_check из корневого контекста моего приложения? (без внешней страницы входа)

ответ

1

Проблема в том, что вы не следуете правилам аутентификации на основе FORM: вам нужно сначала запросить защищенный ресурс, а затем позволить контейнеру запросить у вас имя пользователя и пароль. После успешной проверки подлинности контейнер перенаправит вас на исходно запрошенный ресурс. Это описано в разделе 13.6.3 раздела Java Servlet Specification Version 3.0. Если вы хотите обрабатывать логические логины, вам нужно будет сделать это самостоятельно. Servlet 3.0 имеет методы login на объекте HttpServletRequest, вы можете просто отправить свои запросы AJAX на свой сервлет, а не на j_security_check.

Обратите внимание, что конфигурация <Context> в вашем server.xml вызовет бесконечный хаос и разворачивает ваше веб-приложение ROOT дважды на одном сервере. Просто поместите ROOT.war в каталог Tomcat webapps/ и дайте ему автообновление.

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

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