Функциональность сеанса на прикладном уровне?
Я хотел бы, чтобы мой прикладной уровень знал, какой пользователь вошел в систему, чтобы упростить сигнатуры методов - например, метод (владелец, объект) будет просто методом (объектом). Я использую Spring Security для безопасности, хотя я бы хотел, чтобы Spring не входил в мой уровень приложений, поэтому для этой цели есть отдельный уровень (и преобразование DTO) - например, фасад (адаптер для служб приложений).
Как сделать прикладной уровень осведомленным о пользовательском контексте, на котором он работает, без использования Spring?
1 ответ
Вам нужно будет зарегистрировать Filter
или же HandlerInterceptor
что бы взглянуть на HttpSession
и, если пользователь вошел в систему, сохранить какой-то User
представление в некоторых static
ThreadLocal
контекст. Любой класс может иметь доступ к этой статической ThreadLocal
содержащий ваш User
объект.
Вам придется удалить этот объект, когда пользователь выйдет из системы или истечет время сеанса. Подсказка: HttpSessionListener
,