如何在每个页面上使用Spring MVC,Spring Security和FreeMarker显示用户名。
如何在每个页面上使用Spring MVC,Spring Security和FreeMarker显示用户名。
如何在每个页面的页眉中显示登录用户的用户名?我尝试使用以下方法:
1)使用Spring Security标签,例如:
首先,我创建一个名为security的变量,如下所示:
<#assign security=JspTaglibs["http://www.springframework.org/security/tags"] />
然后,我尝试使用我研究过的authentication标签方法获取用户名,如下所示:
<@security.authentication property="principal.username">
@security.authentication>
但是我遇到了以下错误:
FreeMarker模板错误: org.springframework.beans.NotReadablePropertyException: Bean类[org.springframework.security.authentication.UsernamePasswordAuthenticationToken]的属性'principal.username'无法读取或具有无效的getter方法:getter的返回类型是否与setter的参数类型匹配?
2)我尝试在控制器中获取用户名并将其放入视图中,如下所示:
Authentication auth = SecurityContextHolder.getContext().getAuthentication(); String name = auth.getName(); //获取已登录的用户名 map.addAttribute("username" , name);
这个方法有效,但是我有很多控制器,我不想更新所有的控制器并在所有的控制器中添加这些行。
这些是我的版本:
4.2.5.RELEASE 4.1.0.RELEASE spring-security-taglibs 4.0.4.RELEASE freemarker 2.3.21
欢迎任何解决方案,谢谢。