spring boot获取session的值为null问题及解决方法

 更新时间:2023年05月29日 15:07:35   作者:乔路非  
我在登陆的时候,登陆成功后将name存进了session,然后在获取个人信息时取出session里的name的值为null,接下来通过本文给大家分享springboot获取session的值为null问题,需要的朋友可以参考下

问题描述:

我在登陆的时候,登陆成功后将name存进了session,然后在获取个人信息时取出session里的name的值为null.

在login里存session:

在这里插入图片描述

在getUserInfo里获取session的name:

在这里插入图片描述

控制台结果:

在这里插入图片描述

直接原因:

两个session对象不同,即session.getId()的值不同

根本原因:

涉及前端传参没有携带cookie,后端不能证明是同一会话,故建的session不是同一个对象

解决方案:

本人前端是vue项目,故在main.js里添加:

axios.defaults.withCredentials = true

后端spring boot项目中添加:

CorsFilter.class
package com.postcode.item;
import org.springframework.stereotype.Component;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@Component
@WebFilter(urlPatterns = "/*", filterName = "CorsFilter")
public class CorsFilter implements Filter {
    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) res;
        HttpServletRequest reqs = (HttpServletRequest) req;
        String curOrigin = reqs.getHeader("Origin");
        response.setHeader("Access-Control-Allow-Origin", curOrigin == null ? "true" : curOrigin);
        response.setHeader("Access-Control-Allow-Credentials", "true");
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, PATCH, DELETE, PUT");
        response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
        chain.doFilter(req, res);
    }
    @Override
    public void init(FilterConfig filterConfig) {
    }
    @Override
    public void destroy() {}
}
CorsFilter.class
import org.springframework.stereotype.Component;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@Component
@WebFilter(urlPatterns = "/*", filterName = "CorsFilter")
public class CorsFilter implements Filter {
    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) res;
        HttpServletRequest reqs = (HttpServletRequest) req;
        String curOrigin = reqs.getHeader("Origin");
        response.setHeader("Access-Control-Allow-Origin", curOrigin == null ? "true" : curOrigin);
        response.setHeader("Access-Control-Allow-Credentials", "true");
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, PATCH, DELETE, PUT");
        response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
        chain.doFilter(req, res);
    }
    @Override
    public void init(FilterConfig filterConfig) {
    }
    @Override
    public void destroy() {}
}

最后结果:

在之前的基础上多打印了session.getId(),可以看到两个session的id相同,并且session里的name值也取到了

在这里插入图片描述

参考资料:

cookie相关
Access-Control-Allow-Origin与跨域
Spring Boot如何解决前端的Access-Control-Allow-Origin跨域问题

到此这篇关于spring boot获取session的值为null问题的文章就介绍到这了,更多相关spring boot获取session的值为null内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 简单介绍Java垃圾回收机制

    简单介绍Java垃圾回收机制

    这篇文章主要介绍了简单介绍Java垃圾回收机制,涉及一些相关的Java术语,Hotspot虚拟机,jvm体系结构等内容,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • Mybatis-plus常见的坑@TableField不生效问题

    Mybatis-plus常见的坑@TableField不生效问题

    这篇文章主要介绍了Mybatis-plus常见的坑@TableField不生效问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • Spring Boot面试题总结

    Spring Boot面试题总结

    这篇文章主要介绍了Spring Boot面试题总结,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • 基于LinkedHashMap实现LRU缓存

    基于LinkedHashMap实现LRU缓存

    LinkedHashMap是Java集合中一个常用的容器,它继承了HashMap, 是一个有序的Hash表。那么该如何基于LinkedHashMap实现一个LRU缓存呢?本文将介绍LinkedHashMap的实现原理,感兴趣的同学可以参考一下
    2023-05-05
  • Linux系统Docker拉取JDK21镜像超细详解

    Linux系统Docker拉取JDK21镜像超细详解

    这篇文章主要介绍了如何在Linux系统上使用Docker拉取JDK21镜像,并基于该镜像搭建开发和测试环境,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2024-12-12
  • SpringBoot中如何进行全局异常处理方式

    SpringBoot中如何进行全局异常处理方式

    在SpringBoot开发过程中,全局异常处理能提高程序的鲁棒性并降低代码耦合,通过使用@RestControllerAdvice和@ExceptionHandler注解,可以实现对程序异常的全局拦截和处理,首先需要自定义一个继承自ResponseEntityExceptionHandler的异常处理类
    2024-11-11
  • SpringCloud Gateway DispatcherHandler调用方法详细介绍

    SpringCloud Gateway DispatcherHandler调用方法详细介绍

    我们第一个关注的类就是DispatcherHandler,这个类提供的handle()方法,封装了我们之后所有的handlerMappings,这个DispatcherHandler有点想SpringMVC的DispatchServlet,里面也是封装了请求和对应的处理方法的关系
    2022-10-10
  • jvm堆外内存排查图文举例详解

    jvm堆外内存排查图文举例详解

    Java应用程序通过直接方式从操作系统中申请的内存,叫堆外内存,这篇文章主要给大家介绍了关于jvm堆外内存排查的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • 使用Spring实现@Value注入静态字段

    使用Spring实现@Value注入静态字段

    这篇文章主要介绍了使用Spring实现@Value注入静态字段方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • java.lang.OutOfMemoryError 错误整理及解决办法

    java.lang.OutOfMemoryError 错误整理及解决办法

    这篇文章主要介绍了java.lang.OutOfMemoryError 错误整理及解决办法的相关资料,需要的朋友可以参考下
    2016-10-10

最新评论