Проблема с электронной версией Java EE

Я пытаюсь закодировать форму входа, которая передает имя пользователя и пароль сервлету и позволяет пользователю войти в систему.

Затем в сервлете я lo

request.login(username, password);

но он выдает исключение, которое не удалось аутентифицировать пользователя.

String authType = request.getAuthType();
if(authType != null) {
request.login(username, password);
}
  • Интересно, как закодировать простую страницу входа.
  • Что такое использование request.authenticate(response);

Я пытаюсь это сделать, и он выталкивает экран, который больше не может быть продолжен.

  • Я пытаюсь сослаться на эту страницу http://download.oracle.com/javaee/1.4/tutorial/doc/Security5.html, которая, по моему мнению, должна сначала настроить аутентификацию перед входом в систему и добавить пользователя.

Пожалуйста, помогите.

Спасибо.

Ответ 1

Использование метода HttpServletRequest#login() указывает, что вы используете Servlet 3.0, который является частью Java EE 6. Но вы чтение 7-летнего учебника J2EE 1.4. Я бы предложил отложить этот пыльный учебник и прочитать Java EE 6 tutorial. Безопасность, управляемая контейнером, начинается здесь.

Вернемся к вашей конкретной проблеме, login() будет (как задокументировано) генерирует исключение, если логин недействителен или когда контейнер не работает У какого-либо Райма не было определенности. Предполагая, что вы уверены, что имя пользователя/пароль действительны, вероятно, это последняя причина. Как это сделать в точности зависит от рассматриваемого servletcontainer. Просто ознакомьтесь со своей документацией, используя ключевое слово "Царство". Например, для Tomcat 7.0, что Realm Configuration HOW-TO. Если у вас есть имена пользователей/паролей в базе данных SQL, вы, вероятно, захотите использовать JDBCRealm.

Как только вы настроите Realm на уровне servletcontainer, вы сможете использовать метод login() так, как хотите. Не забудьте добавить <security-constraint> в web.xml в соответствии с учебным пособием Java EE 6, чтобы ограничить доступ к определенным шаблонам URL и указать URL-адрес страницы входа.