分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

清除@SessionAttributes ?网站实现退出登录

发布时间:2023-09-06 01:47责任编辑:赖小花关键词:暂无标签

在网站实现登录时,我认识了@SessionAttributes,对我来说是真的好用,@SessionAttributes注解可以使得模型中的数据存储一份到session域中。

这样在页面跳转时可以直接通过${sessionScope.xxx}获取用户名等信息,非常好用。

但是今天我做退出登录时发现一个问题,我在controller里清除了用户信息如下:

@RequestMapping("/outLogin") ???public String tologout(HttpSession session,HttpServletRequest request,HttpServletResponse response) { ???????session.removeAttribute("user"); ???????return "redirect:/login"; ???}

但是页面还是可以获取user,这让我很郁闷,无奈求助百度,看到了这篇博客https://blog.csdn.net/hayre/article/details/54666275,

原来

Spring mvc在调用处理方法前,在请求线程中自动一个隐含的模型对象,调用所有在方法级别标注了@ModelAttribute的方法,并将方法返回值添加到隐含模型中,
查看Session中是否存在@SessionAttributes(“xxx”)所指定的xxx属性,如果有,将其添加到隐含模型中,如果隐含模型已经存在xxx属性,该步骤会覆盖隐含模型中已有的属性值。对应标注了@ModelAttribute(“xxx”)方法的入参按如下流程如果隐含模型包含了xxx属性,将其赋给该入参,再用请求消息填充该入参对象直接返回,否则如果xxx是会话属性,即处理类定义出标注了@SessionAttributes(“xxx”),
则尝试从该会话中获取该属性,并将其值赋给入参,然后再用请求填充该入参对象,如会话中找不到xxx属性,则抛出HttpSessionRequiredException,
如果隐含模型不存在xxx属性,且xxx也不是会话属性,则创建入参的对象实例,在用请求填充该入参。@SessionAttributes 允许指定多个属性。你可以通过字符串数组的方式指定多个属性,如 @SessionAttributes({“attr1”,”attr2”})。此外,@SessionAttributes 还可以通过属性类型指定要 session 化的 ModelMap 属性,如 @SessionAttributes(types = User.class),当然也可以指定多个类,如@SessionAttributes(types = {User.class,Dept.class}),还可以联合使用属性名和属性类型指定:@SessionAttributes(types = {User.class,Dept.class},value={“attr1”,”attr2”})。@SessionAttributes需要清除时,使用SessionStatus.setComplete();来清除。注意,它只清除@SessionAttributes的session,不会清除HttpSession的数据

参考这篇博客我进行了修改

 @RequestMapping("/outLogin") ???public String tologout(HttpSession session,HttpServletRequest request,HttpServletResponse response,SessionStatus sessionStatus) { ???????session.removeAttribute("user"); ???????sessionStatus.setComplete(); ????????return "redirect:/login"; ???}

@SessionAttributes需要清除时,使用SessionStatus.setComplete();来清除。注意,session.removeAttribute只清除@SessionAttributes的session,不会清除HttpSession的数据

清除@SessionAttributes ?网站实现退出登录

原文地址:https://www.cnblogs.com/lwx521/p/8681822.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved