Как избежать сессионных параметров на бизнес-уровне?
У меня есть приложение Java EE (простой веб-интерфейс, большой бизнес-уровень EJB 3, JPA), большинство функций которого зависят от текущего пользователя, вошедшего в систему.
Из-за этого EJB заражены вездесущими String userName
параметр. Вы вряд ли найдете нетривиальный метод, который обходится без него, и он опускается до самых базовых EJB-компонентов. Иногда он дополняется другими параметрами, относящимися к сеансу, такими как язык пользователя.
В результате списки параметров растут и страдает ясность кода. Вероятно, это общая проблема, как ее избежать? Передача большего количества кода клиенту с графическим интерфейсом кажется еще более безумной идеей.
1 ответ
Java EE поддерживает распространение контекста безопасности на различные уровни. Например, для проверки различных методов в EJBContext, связанных с аутентификацией / авторизацией, таких как getCallerPrincipal()
, isCallerInRole()
, Я предлагаю вам прочитать две статьи ниже