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