【发布时间】:2011-02-10 00:02:50
【问题描述】:
我有一个包含名字部分的自定义用户详细信息对象。下面的用户名有效,但我想要第二个类似的东西。如何访问此自定义属性?
<security:authentication property="principal.username" />
<security:authentication property="principal.firstname" />
【问题讨论】:
我有一个包含名字部分的自定义用户详细信息对象。下面的用户名有效,但我想要第二个类似的东西。如何访问此自定义属性?
<security:authentication property="principal.username" />
<security:authentication property="principal.firstname" />
【问题讨论】:
我认为您尝试了上述方法但没有成功。
检查您的自定义用户详细信息类,确保“名字”属性的 getter 和 setter 方法的大小写正确。
【讨论】:
为我工作。这是我的测试代码:-
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;
【讨论】: