SpringBoot项目针对访问进来的多个线程,如何实现各个线程间数据隔离?是通过cookie/token在每次请求中恢复数据,还是用Session在后台存储数据?
2条回答 默认 最新
关注 【相关推荐】
- 给你找了一篇非常好的博客,你可以看看是否有帮助,链接:SpringBoot-请求拦截器查看本地Cookie,判断用户是否登录
- 除此之外, 这篇博客: 基于Spring Boot的论坛项目笔记中的 通过cookie在数据库中查询信息 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
整个流程:
当访问“/”之前,拦截器prehandle中,遍历cookie,当找到name=token的cookie时,将cookie的value去数据库中查询,若查询到,将数据库中对应此cookie的user数据和未读数写入session。只有登录过,才有token。@Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { Cookie[] cookies = request.getCookies(); if (cookies!=null&&cookies.length!=0){ for (Cookie cookie : cookies) { if (cookie.getName().equals("token")){ String token = cookie.getValue(); UserExample userExample = new UserExample(); userExample.createCriteria() .andTokenEqualTo(token); List<User> users=userMapper.selectByExample(userExample); if(users.size() != 0){ request.getSession().setAttribute("user",users.get(0)); Long unreadCount=notificationService.unreadCount(users.get(0).getId()); request.getSession().setAttribute("unreadCount",unreadCount);//将未读数信息写入session,便于导航栏和我的回复的未读数 } break; } } } return true; }
前端页面通过session获取用户信息,并显示。
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^解决 无用评论 打赏 举报