Получить пользовательское свойство принципала пользователя - PullRequest
2 голосов
/ 10 февраля 2011

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

<security:authentication property="principal.username" />

<security:authentication property="principal.firstname" />

Ответы [ 2 ]

3 голосов
/ 10 февраля 2011

Полагаю, что вы попробовали вышеописанное и что это не сработало.

Проверьте свой класс пользовательских данных и убедитесь, что прописные буквы методов получения и установки для свойства 'firstname' указаны правильно.

2 голосов
/ 10 февраля 2011

У меня работает. Вот мой тестовый код: -

CustomUserDetails class

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;
...