springboot中删除@SessionAttributes注解的属性

在SpringBoot中做登录登出的操作时,将用户通过@SessionAttributes注解存入到session中,很是方便。结果发现登出时,使用session.removeAttribute("user")没有用,不能登出。

发现问题之后,开始面向Baidu的编程。

原来我的登录时候存入的属性到session的方式:

@SessionAttributes(value = {"userInfo"})
...
model.addAttribute("userInfo", user);

退出登录时候的方式:

    @RequestMapping("/logout")
    public String logout(HttpSession session) {
        session.removeAttribute("userInfo");
        return "redirect:/login";
    }

经过Baidu的文章的详细描述。了解到,session.removeAttribute()只能删除httpSession中的数据,不能影响到@SessionAttributes中的属性。

修改为

    @RequestMapping("/logout")
    public String logout(HttpSession session, SessionStatus sessionStatus) {
        session.removeAttribute("userInfo");
        sessionStatus.setComplete();
        return "redirect:/login";
    }

参考博客:清除@SessionAttributes 网站实现退出登录
spring [email protected] 忘记清除 导致无法退出登录问题

原文地址:https://www.cnblogs.com/to-red/p/12109974.html

时间: 2024-07-31 15:28:16

springboot中删除@SessionAttributes注解的属性的相关文章

springboot中的常用注解

springboot中的常用注解个人觉得springboor中常用的注解主要可以分为三种:放入容器型注解.从容器中取出型注解和功能型注解.其中的放入容器型和从容器中取出型就是我们平时所说的控制反转和依赖注入的概念(个人版本- - - 可以看一看,别太当真 0.0) 放入容器型注解简介:个人觉得就是申明一个实例对象,然后将这个对象交给spring管理. 1.@Component:放在类上,把普通类实例化到spring容器中.可以说很多注解都是基于这个注解的. 2.@Bean: 放在方法上,用@Be

全栈之路-杂篇-探究springBoot中的条件注解

这个是接上一个spring IOC注入机制中的进行继续探讨的,我们来继续探究OCP原则下的代码书写的问题,这个是利用条件注解. 一.条件注解的基本用法 这里还是之前的学习示例,简单的看一下 1.实体类的代码 这里有另个实体类,基本上就是一样的,只给出一个实体类的代码,另外,接口的代码也比较简单,不给出了,看的话,可以看上一篇那个中的代码 1 public class Diana implements ISkill { 2 3 private String skillName = "Diana R

我爱Java系列之---【SpringBoot中常用的注解和两种注入方式】

@EnableConfigurationProperties(DataSourceProperties.class) 来声明要使用DataSourceProperties 这个类并初始化该类对象,该类不用放在IOC容器中,可以通过该注解直接使用. [email protected]:一般写在类上边,通过该注解将当前类初始化到Spring的IOC容器中,其他类若想调用,直接用@Autowired去容器中拿. [email protected]: 一般写在类上边,标明该类是一个配置类,被注解的类内部

springboot中使用@data注解,减少一些不必要代码

一.idea安装lombok 二.重启idea 三.添加maven依赖(pom.xml) <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.10</version> </dependency> 四.实体类 @Datapublic class Base implements

企业分布式微服务云SpringCloud SpringBoot mybatis (十四)Spring Boot中使用MyBatis注解配置详解

传参方式 下面通过几种不同传参方式来实现前文中实现的插入操作. 使用@Param 在之前的整合示例中我们已经使用了这种最简单的传参方式,如下: @Insert("INSERT INTO USER(NAME, AGE) VALUES(#{name}, #{age})") int insert(@Param("name") String name, @Param("age") Integer age); 这种方式很好理解,@Param中定义的name

在Spring-boot中,为@Value注解添加从数据库读取properties支持

一般我们会把常用的属性放在工程的classpath文件夹中,以property,yaml或json的格式进行文件存储,便于Spring-boot在初始化时获取. @Value则是Spring一个非常有用的注解,可以在初始化时很方便的对Bean的入参变量进行赋值,例如: @Bean public BusinessClient businessClient (@Value("http://baseUrl/") String baseUrl) {     Retrofit retrofit

三、SpringBoot的常用配置(.yml通过配置文件和注解进行属性注入,以及分别配置生产、开发环境)

1.在application.properties或application.yml中配置 ① .application.properties 中 server.port=8081 server.context-path=/girl ②.application.yml中 (推荐) .yml文件冒号后必须加空格,加空格后关键词会变亮 server: port: 8081 context-path: /girl 2.通过配置文件和注解进行属性注入 ①在配置文件中添加关键词cupSize server:

Spring注解解决属性中的自动注入

@Autowired  Spring 2.5 引入了 @Autowired 注释,它可以对类成员变量.方法及构造函数进行标注,完成自动装配的工作. 通过 @Autowired的使用来消除 set ,get方法. 加在成员变量之上可以省略get set方法. 但是首先得现在Spring配置文件中配置org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor @Resource 注解被用来激活一个

Springboot中使用缓存

在开发中,如果相同的查询条件去频繁查询数据库, 是不是会给数据库带来很大的压力呢?因此,我们需要对查询出来的数据进行缓存,这样客户端只需要从数据库查询一次数据,然后会放入缓存中,以后再次查询时可以从缓存中读取.Spring3开始提供了强大的基于注解的缓存支持,可以通过注解配置方式低侵入的给原有Spring应用增加缓存功能,提高数据访问性能. 具体在Springboot中使用缓存如下: 1.在pom.xml中引入cache依赖,添加如下内容: <dependency> <groupId&g