Получить пользовательское свойство принципала пользователя

У меня есть пользовательский объект с подробным именем пользователя. Ниже имя пользователя работает, но я хочу, чтобы что-то вроде второго работало. Как я могу получить доступ к этому пользовательскому свойству?

<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;
Другие вопросы по тегам