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