Получить пользовательское свойство принципала пользователя
У меня есть пользовательский объект с подробным именем пользователя. Ниже имя пользователя работает, но я хочу, чтобы что-то вроде второго работало. Как я могу получить доступ к этому пользовательскому свойству?
<security:authentication property="principal.username" />
<security:authentication property="principal.firstname" />
2 ответа
Решение
Я предполагаю, что вы попробовали вышеупомянутое и что это не сработало.
Проверьте свой пользовательский класс сведений о пользователе, чтобы убедиться, что прописные буквы методов getter и setter для свойства 'firstname' указаны правильно.
Работает для меня. Вот мой тестовый код:-
Класс CustomUserDetails
public class CustomUserDetails implements UserDetails {
public String getFirstName() {
return "hello";
}
...
}
Пользовательский тег в JSP
Следующий тег возвращает hello
,
<security:authentication property="principal.firstName" />
Кстати, убедитесь, что вы не ставите getFirstName()
в анонимный класс, потому что это не будет работать.
То, что я пытаюсь сказать здесь, не делайте этого:
...
return new UserDetails() {
// adding extra method here will not work
public String getFirstName() {
return "hello";
}
public String getUsername() {
return "test";
}
...
};
... сделай это:-
...
// this class implements UserDetails and contains getFirstName()
CustomUserDetails csd = new CustomUserDetails();
csd.set...(...)
...
return csd;