2013-03-05 7 views
1

Я использую Spring MVC + Spring Security в своем проекте. И мне нужно получить пользовательский объект после аутентификации пользователя и его сеанса. Например, для того, чтобы напечатать его имя на моей странице приветствия как: Welcome, ${user.firstName}! или получить его список компаний на другую страницу:Получить аутентифицированный пользовательский объект Spring MVC

<c:forEach items="${user.userCompanies}" var="company"> 
    ${company.name} 
</c:forEach> 

и т.д. могли бы вы помочь мне решить эту проблему?

ответ

2

Проверьте устройство taglib от Spring Security.
Чтобы получить имя пользователя, используйте:

<sec:authentication property="principal.username" /> 
+0

Спасибо. Но насколько я знаю, имя main.username дает мне только поля класса UserDetails, такие как имя пользователя, пароль. Как насчет пользовательских полей моего объекта (например, userCompanies и т. Д.)? – sidlejinks

+0

Я думаю, что вы можете получить доступ к любому свойству своего пользовательского объекта 'UserDetails', поскольку реализация [tag] (https://github.com/SpringSource/spring-security/blob/master/taglibs/src/main/java/org /springframework/security/taglibs/authz/AuthenticationTag.java#L100-L101) использует отражение, чтобы получить его. Я думаю, что 'princip.companies' должен работать. – zagyi

+0

Я использовал '' на моем jsp и получил 'Invalid property 'main.firstName' из bean-класса [org.springframework.security.authentication.UsernamePasswordAuthenticationToken]:' exception :( – sidlejinks

Смежные вопросы