JDBCRealm не предоставляет такую функцию. Вы должны написать один самостоятельно. Я только что написал один для моего веб-приложения. Мой использует спящий режим, но это не существенно, поскольку шаги довольно общие.
- Сначала установите атрибут сессии 'checkExpired' в вашем login.jsp (или как вы там его называли).
<c:set var="checkExpired" value="true" scope="session" />
Затем в ваш index.jsp добавьте немного кода для чтения checkExpired и, если он установлен в true, выполните проверку дат и установите значение checkExpired в false! Получите последнюю дату, когда проход был изменен (сохранен в базе данных), и сравните его с текущей датой. Если, скажем, на 90 дней (или более) перенаправить пользователя на страницу смены пароля jsp.
Мой changepass.jsp содержит форму, в которой пользователь вводит новый пароль. Действие формы - вызвать сервлет, который обрабатывает изменение паролей.
Сервлет, изменяющий пароль, проверяет пароль, записывает его в базу данных и обновляет поле last_pass_change в блоке данных до текущей даты. Наконец, он перенаправляет на index.jsp.
Теперь, это совсем не элегантно (по крайней мере, IMHO), но это цена, которую вы платите при использовании JDBCRealm для аутентификации. Если вы хотите, вы можете прочитать о расширении функциональности вашего сервера или предоставлении своей собственной области. Тем не менее, это кажется большой работой для чего-то такого тривиального.
Удачи,
Дамо