2

我有一个自定义用户详细信息对象,其中包含名字部分。下面的用户名有效,但我想要第二个类似的东西。如何访问此自定义属性?

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

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

2 回答 2

3

我认为您尝试了上述方法并且它不起作用。

检查您的自定义用户详细信息类,以确保“名字”属性的 getter 和 setter 方法的大小写正确。

于 2011-02-10T00:20:37.103 回答
2

为我工作。这是我的测试代码:-

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;
于 2011-02-10T00:28:01.753 回答