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

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

阅读 4.1k
2 个回答

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏