Функциональность сеанса на прикладном уровне?

Я хотел бы, чтобы мой прикладной уровень знал, какой пользователь вошел в систему, чтобы упростить сигнатуры методов - например, метод (владелец, объект) будет просто методом (объектом). Я использую Spring Security для безопасности, хотя я бы хотел, чтобы Spring не входил в мой уровень приложений, поэтому для этой цели есть отдельный уровень (и преобразование DTO) - например, фасад (адаптер для служб приложений).

Как сделать прикладной уровень осведомленным о пользовательском контексте, на котором он работает, без использования Spring?

1 ответ

Решение

Вам нужно будет зарегистрировать Filter или же HandlerInterceptor что бы взглянуть на HttpSession и, если пользователь вошел в систему, сохранить какой-то User представление в некоторых staticThreadLocal контекст. Любой класс может иметь доступ к этой статической ThreadLocal содержащий ваш User объект.

Вам придется удалить этот объект, когда пользователь выйдет из системы или истечет время сеанса. Подсказка: HttpSessionListener,

Другие вопросы по тегам