+-
springboot用户登录后,需要把用户信息展示到每个页面的导航栏,这种功能一般如何实现

登录的时候,使用session记录了下用户的id
我有两个思路
1、在拦截器Interceptor,在preHandle方法中,通过HttpServletRequest,获取到session,读取到用户id,查询到用户的信息,然后设置到request对象中(request.set("user",user));在每个展示页面的控制器方法中,通过HttpServletRequest,获取到user。
2、使用@ModelAttribute注解一个方法,在方法中获取到用户信息,添加到model中,可以直接在模板上面使用。
这种问题,通常的解决思路是什么呢?

通常是返回数据给前端,自己存起来

鉴于是 MVC 项目,所以也不存在对应接口了。就在登录的控制器方法中,如果是登录成功,将用户非敏感信息,传值到视图中,或者存入sessionStorage,或者保存在一个隐藏的div中,以属性以data开头。例如(<div data-username="example">)。后续通过 js 读取即可。
如果是使用 spring security,可以创建一个 @AuthenticationPrincipal 注解的参数注解,每次控制器方法的参数中可以自动注入当前用户信息。