退出登录仍然显示用户名

问题在与使用LocalThread与request的生命周期不吻合,解决方案如下:

@Autowired
private TicketService ticketService;
@Autowired
private UserService userService;
@RequestMapping(path = {"/index"}, method = {RequestMethod.GET})
public String bookList(Model model, @CookieValue("t")String t) {
//User host = hostHolder.getUser();
// 修改 2019.04.06 LocalThread生命周期与request差异巨大
//判断 t票是否存在, 来判断是否已经登录
User host = null;
Ticket ticket = ticketService.getTicket(t);
if (ticket != null){
host = userService.getUser(ticket.getUserId());
}
if (host != null) {
model.addAttribute("host", host);
}
loadAllBooksView(model);
return "book/books";
}

替换该请求即可,该请求位于 com.nowcoder.project.controllers.BookController

#Java##笔记#
全部评论
启用CookieUtils类中的removeCookie方法即可!
点赞 回复 分享
发布于 2021-03-17 19:23
这个项目讲解文档顺序问题,后面设置的拦截器HostInfoInterceptor中在每一次请求中都从Cookie中提取ticket然后去数据库查询用户将用户setHost到ThreadLocal中了。 讲解文档没有看到后面,之前运行的请求login和books是不同线程,无法获得互相ThreadLocal中的值。
点赞 回复 分享
发布于 2019-10-25 15:31

相关推荐

不愿透露姓名的神秘牛友
06-26 15:18
点赞 评论 收藏
分享
矫健的闭门羹烹饪师又...:本人双非本,在鹅厂测开实习,你这个简历上写的这两个项目的技术栈都差不多,能够让面试官去延伸去问的八股除了redis就再没啥了,建议项目这边可以再改改,然后专业技能那块的话,感觉linux和测试工具可以分开写,毕竟不是干一件事的,反正没实习的基础上面试就深挖项目和八股,好好卷吧
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务