我有一个自定义用户详细信息对象,其中包含名字的一部分。在用户名下方工作,但我希望像第二个工作。如何访问此自定义属性?
<security:authentication property="principal.username" />
<security:authentication property="principal.firstname" />
答案 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;