Как принудительно изменить пароль при первоначальном входе пользователя в систему с помощью Spring Security

Что было бы наиболее элегантным способом принудительной смены пароля для пользователя?начальный вход с использованием Spring Security?

Я пытался реализовать кастомAuthenticationSuccessHandler как уже упоминалосьВотно, как уже упоминалосьrodrigoapЕсли пользователь вручную вводит URL-адрес в адресной строке, он все равно сможет перейти на эту страницу, даже если он не сделал этого.сменить пароль.

Я сделал это с помощью фильтра ForceChangePasswordFilter. Потому что, если пользователь вводит URL вручную, он может обойти форму смены пароля. С помощью фильтра запрос всегда перехватывается.

Таким образом, я приступил к реализации пользовательского фильтра.

Мой вопрос заключается в следующем: когда я реализую пользовательский фильтр и отправляю перенаправление внутри него, он снова проходит через фильтр, вызывая бесконечный цикл перенаправления, как упоминалосьВот, Я попытался реализовать упомянутое решение, объявив два http-тега в моем security-context.xml, причем первый тег имелpattern атрибут как таковой, но он все еще проходит через мой пользовательский фильтр:



  
  ...
  

...




  

Моя текущая реализация (которая работает):

Внутри моего собственного обработчика успешной аутентификации я установил атрибут сеансаisFirstLoginВ моем ForcePasswordChangeFilter я проверяю сеансisFirstLogin установленоЕсли это так, то я отправляю перенаправление на мою принудительную смену пароляОстальное я звонюchain.doFilter()

Моя проблема с этой реализацией состоит в том, что доступ к моей папке ресурсов также проходит через этот фильтр, который вызывает искажение моей страницы (потому что * .js и * .css не были успешно получены). Это причина, почему я пытался иметь два теги в моем приложении application context.xml (которое нет работа).

Таким образом, мне пришлось вручную фильтровать запрос, если servletPath запускается или содержит "/Ресурсы", Я не'не хочу, чтобы это было так - необходимость вручную фильтровать путь запроса - но сейчас этоЧто у меня есть?

Какие'более элегантный способ сделать это?

Ответы на вопрос(5)

Ваш ответ на вопрос