在Thymeleaf模板中,我想访问Principal
实现的属性。主体被按预期设置到Authentication
对象中,并按如下方式组成:
public class ApplicationUser implements Principal {
private Long userId;
private String displayName;
//...
}
public class ApplicationUserDetails extends ApplicationUser implements UserDetails {
//...
}
在应用程序本身中,我可以请求Authentication
对象,获取Principal
,然后将主体转换为ApplicationUser
,以获得所需的属性,如下所示:
String displayName = ((ApplicationUser) authentication.getPrincipal()).getDisplayName();
我现在的问题是,我如何从Thymeleaf模板中的身份验证对象中获取此数据以使用它。建立一个档案链接
我想得到下面的非工作链接的例子与displayName作为尾巴工作:
<a th:href="|/users/${#authentication?.principal.getDisplayName()}|">Profile</a>
我想避免的是将所需的数据添加到控制器中的每个视图中,因为我必须为每个端点这样做,因为概要链接位于头部。
感谢您的帮助
1条答案
按热度按时间rjee0c151#
我希望你做得很好!使用**#authentication对象**,但需要将其强制转换为相应的类以访问所需的属性。以下是如何修改链接示例以访问displayName属性(GENERATE PROFILE LINK):
注:
确保在模板的开头有适当的Thymeleaf安全命名空间声明,以使用thIS OBJECT:
我希望它能起作用!!!