Доступ к моему пользовательскому объекту на странице jsp с использованием безопасности Spring 3 - PullRequest
5 голосов
/ 18 октября 2011

Я реализовал UserDetailsService, он возвращает экземпляр MyUser (который реализует UserDetails)

public MyUser loadUserByUsername(String arg0)

Теперь я хочу получить доступ к своим пользовательским получателям / полям на MyUser на моих страницах JSP, пока я получил это:

${pageContext.request.userPrincipal.name}

Но это разрешает доступ только к Principal объекту. Как я могу получить доступ к MyUser объекту?

Ответы [ 3 ]

8 голосов
/ 18 октября 2011

это просто на странице JSP Я добавил это:

<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
...
<sec:authentication property="principal.firstname" /> 

Где принципал на самом деле является экземпляром MyUser, поэтому «имя» может быть любым из моих пользовательских методов получения и установки

6 голосов
/ 20 марта 2013

После анализа HTTPSesson сразу после успешного входа в систему я обнаружил, что существует атрибут с именем SPRING_SECURITY_CONTEXT . Например, мой пользовательский UserDetails имеет объект с именем user , который имеет свойство firstName . В JSP значение этого свойства может быть достигнуто с помощью следующего:

${sessionScope.SPRING_SECURITY_CONTEXT.authentication.principal.user.firstName}
2 голосов
/ 18 октября 2011

Если ваш MyUser объект реализует Principal, и вы помещаете его в сеанс http при успешном входе в систему, вы можете получить его из сеанса и привести его.


Вы можете реализовать AuthenticationSuccessHandler вставьте туда свой UserDetailsService и поместите его в сеанс.

Тогда вы можете ввести свой AuthenticationSuccessHandler в UsernamePasswordauthenticationFilter, который обрабатывает элемент <form-login>.

ЕслиВы даете мне подробную информацию о своей конфигурации контекста безопасности, я мог бы дать вам более подробную информацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...