我需要在任何页面上显示已记录的用户名。是否可以只使用一个将在任何请求上调用的方法,并将name属性添加到模型?
答案 0 :(得分:1)
由于您在问题中添加了spring-security
标记,因此如果您想在任何页面上显示已登录用户,最好选择使用spring-security
。
首先,在jsp页面中添加以下声明:
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags"%>
然后在您的jsp页面中,我们可以使用<sec:authentication property="name"/>
在任何页面显示登录用户。
答案 1 :(得分:0)
是和否。 您可以将用户名存储在Session(setRequestAtrributes)中,也可以创建一个过滤链,该过滤链通过auth-token / authentication读取用户名。取决于您决定登录哪个用户的位置。
答案 2 :(得分:0)
您可以添加 Servlet过滤器,如下所示,将userName添加到响应标题。
@Component
public class MyFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
HttpServletResponse httpServletResponse = (HttpServletResponse) response;
HttpSession session = httpServletRequest.getSession();
if(session !=null&& session.getAttribute("username")!=null){
httpServletResponse.addHeader("username",httpServletRequest.getSession().getAttribute("username").toString() );
}
}
在您的用户界面中使用来自响应的userName。