Я получил рукописную защиту, простой сервлет-фильтр, который перенаправляет неавторизованного пользователя на их страницы входа. Контроллер входа перенаправляет их на запрошенный URL-адрес после успешной аутентификации или на их главную страницу. Этот подход работает нормально, единственный недостаток в том, что я должен передать объект User, который хранится в HttpSession, через stacktrace в EJB beans.
Теперь я переписал некоторый код и использую Spring-security как аутентификацию на основе http. Он автоматически интегрируется с Glassfish JAAS.
Мне больше не нужно передавать User через stacktrace, достаточно вызова sessionContext.getCallerPrincipal ()
. Но основной объект возвращает мне только userName, а не userId, поэтому мне нужно выполнить дополнительный выбор, если мне, например, нужен userId.
1) Есть ли способ расширить объект Principal, чтобы он мог хранить больше свойств?
2) Почему я должен использовать JAAS, Spring Security или другую безопасность framework, почему бы просто не написать фильтр сервлетов?