最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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:

在這里插入圖片描述

控制臺結(jié)果:

在這里插入圖片描述

直接原因:

兩個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() {}
}

最后結(jié)果:

在之前的基礎上多打印了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內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

安乡县| 尼勒克县| 凤山县| 旅游| 镇巴县| 岫岩| 松滋市| 南丰县| 宜兰县| 红安县| 广安市| 库伦旗| 郓城县| 鸡东县| 民县| 石林| 文成县| 绥江县| 玛沁县| 左权县| 武宁县| 博罗县| 昔阳县| 昌图县| 福鼎市| 益阳市| 鹤山市| 桃源县| 锡林浩特市| 盐山县| 大连市| 和龙市| 肇州县| 额尔古纳市| 宜州市| 桂林市| 西峡县| 黄陵县| 新龙县| 永川市| 潍坊市|