Срок действия пароля пользователя в JDBCRealm истек

Как использовать «Пароль с истекшим сроком действия» в JDBCRealm?

Умеет ли это делать?


person cloverink    schedule 30.03.2011    source источник
comment
Может ли база данных, которую вы определили в JDBCRealm, сделать это?   -  person user207421    schedule 31.03.2011
comment
Эта функция зависит от базы данных?   -  person cloverink    schedule 31.03.2011
comment
@cloverlink: я понятия не имею, что означает этот вопрос. Пожалуйста, переведи.   -  person user207421    schedule 05.04.2011


Ответы (1)


JDBCRealm не предоставляет такой функции. Вам нужно написать один из них самостоятельно. Я только что написал один для своего веб-приложения. Мой использует спящий режим, но это не обязательно, так как шаги довольно общие.

  1. Сначала установите атрибут сеанса «checkExpired» в вашем файле login.jsp (или как вы его назвали).
<c:set var="checkExpired" value="true" scope="session" />
  1. Затем в вашем index.jsp добавьте немного кода для чтения checkExpired и, если он установлен в true, выполните проверку дат и установите значение checkExpired в false! Получите последнюю дату смены пропуска (сохраненную в базе данных) и сравните ее с текущей датой. Если это, скажем, 90 дней старше (или более), перенаправьте пользователя на страницу смены пароля jsp.

  2. Мой changepass.jsp включает форму, в которой пользователь вводит новый пароль. Действие формы заключается в вызове сервлета, который обрабатывает смену паролей.

  3. Сервлет смены пароля проверяет пароль, записывает его в базу данных и обновляет поле last_pass_change в базе данных до текущей даты. Наконец, он перенаправляет на index.jsp.

Это совсем не элегантно (по крайней мере, ИМХО), но это цена, которую вы платите при использовании JDBCRealm для аутентификации. Если вы хотите, вы можете прочитать о расширении функциональности вашего сервера или создании собственного мира. Тем не менее, это кажется большой работой для чего-то столь тривиального.

Удачи,

Дамо

person damo_inc    schedule 01.04.2011