Вы можете использовать управляемую контейнером аутентификацию с использованием дескрипторов развертывания .Это не требует дополнительного кода на вашей стороне, кроме простой формы входа в систему с полем ввода и паролем, которое отправляется на URL j_security_check
.Вот базовый пример:
<form action="j_security_check" method="post">
<input type="text" name="j_username">
<input type="password" name="j_password">
<input type="submit">
</form>
Предполагая, что у вас есть личные страницы в папке с именем /private
и указанная выше страница входа находится в /private/login.jsp
, затем добавьте следующие записи в * 1009 веб-приложения*:
<security-constraint>
<web-resource-collection>
<web-resource-name>Private</web-resource-name>
<url-pattern>/private/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>friends</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<realm-name>Private</realm-name>
<form-login-config>
<form-login-page>/private/login.jsp</form-login-page>
<form-error-page>/private/error.jsp</form-error-page>
</form-login-config>
</login-config>
Затем в используемом сервлет-контейнере необходимо настроить так называемое Realm для Private
.Поскольку неясно, какой сервлетконтейнер вы используете, вот документ, нацеленный на Tomcat 8.0: Конфигурация области HOW-TO .Вы можете настроить его для проверки комбинации имени пользователя и пароля с файлом XML, базой данных или даже с пользовательским местоположением.
Совершенно другая альтернатива - доморощить механизм входа в систему с помощью Filter
который проверяет присутствие вошедшего в систему пользователя в области сеанса.См. это и это ответ, как этого добиться.