获取用户主体的自定义属性

时间:2011-02-10 00:02:51

标签: spring-security principal

我有一个自定义用户详细信息对象,其中包含名字的一部分。在用户名下方工作,但我希望像第二个工作。如何访问此自定义属性?

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

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

2 个答案:

答案 0 :(得分:3)

我认为你尝试了上述内容并且它没有用。

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

答案 1 :(得分: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;