Spring security и JSF: вызов метода для поддержки бина при входе в систему? - PullRequest
1 голос
/ 29 марта 2012

Я хочу, чтобы метод в компоненте поддержки области действия вызывался после входа пользователя в систему. Как я могу это сделать?

Среда: Spring Security 3.0.x, Spring 3.0.x и JSF 1.2.Основными компонентами управляет Spring.

Справочная информация: сеансы создаются даже без входа в систему.Мой бин области действия содержит параметры, которые изначально установлены в значения по умолчанию.После входа в систему я хочу обновить состояние сеанса до предпочтений, сохраненных в базе данных для этого конкретного пользователя.Чтобы добиться этого, я представлял интерфейс или даже более простой аннотированный (например, @PostLogin) метод, но пока я не нашел ничего подобного.

Было бы хорошо, если бы этот метод вызывался при каждом основном изменениито есть тоже на выходе.Также было бы приемлемо, если бы весь бин был разрушен и воссоздан при входе в систему, хотя мои другие сессионные бины должны выжить.

На данный момент я нашел следующее:

  • ApplicationListener : Слушателю, видимо, нужна область приложения, и я не могу получить доступ к своему сессионному компоненту в нем.@Autowired плюс прокси не работает.Введенный объект сломан;он не содержит своих зависимостей, хотя реальный компонент поддержки содержит.
  • : не пробовал это, но мне нужно, чтобы метод вызывался независимо от используемой процедуры входа в систему.Помимо форм, мы поддерживаем запомнить меня и программный вход (например, автоматический вход в систему после процесса забытого пароля).

1 Ответ

2 голосов
/ 29 марта 2012

Отвечая на мой вопрос:

ApplicationListener был правильный путь, однако @Autowired не было.

Я определил интерфейс с одним методом, который реализован моим сессионным компонентом. Класс прослушивателя событий (singleton scoped) затем использует ApplicationContext.getBeansOfType(..) для поиска сессионных компонентов этого интерфейса и вызывает метод интерфейса для каждого из них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...