欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Redis解決跨域存取Session問題

 更新時間:2023年04月12日 14:39:18   作者:心態(tài)還需努力呀  
本文主要介紹了Redis解決跨域存取Session問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

前言

vue3+SpringBoot做項目時,由于vue前端項目是在8080端口運行,而后端項目是在8081端口運行,前端通過跨域發(fā)送axios請求發(fā)送給后端的場景下,我以前在前后端不分離的情況下做項目登錄功能做過濾器時,直接用Session就可以將用戶登錄的信息存到session中,過濾器只需要查看在攔截路徑時對session做獲取,獲取成功則說明可以用戶是登錄成功的。也不會出現(xiàn)session存不進去的情況。

這次的前后端分離這個問題就出現(xiàn)了,下面就來解決這個問題。

一、遇到的情況

在登錄controller中的login方法里,登錄成功后將值存到session中

request.getSession().setAttribute("administrator",admin.getId());

但在頁面中打開f12,點開應(yīng)用會發(fā)現(xiàn)沒有存儲session的信息。

session中沒有存入的值

這就是跨域帶來的問題,后端服務(wù)器是8081端口,存session就存不到前端8080端口的session中。

二、解決問題

既然已經(jīng)知道了問題,在我發(fā)現(xiàn)這個問題時(因為我Debug調(diào)試跟蹤后端代碼后發(fā)現(xiàn)確實執(zhí)行了存session的動作,所以才會知道是跨域?qū)е碌膯栴})。我一開始就上網(wǎng)找材料,查找解決辦法。搜到的大部分都是在分布式的情況下共享session問題。不太符合解決我當前遇到的問題。

查了一段時間資料后,我想到了Redis,想到了:存session、取session的過程,那能用session去存取數(shù)值,為什么不用Redis呢?這讓我“如魚得水“,在學習完Redis后還沒想到Redis可以用來代替session干活,哈哈。所以我將用Redis解決問題的步驟代碼分享給大家,學過Redis的應(yīng)該是屬于簡單易懂的。

2.1 配置yml文件

在yml文件中配置Redis的基本信息。

2.2 啟動Redis

將Redis服務(wù)器打開

2.3 代碼編寫

第一步:注入RedisTemplate

@Autowired
private RedisTemplate redisTemplate;

第二步:將登錄成功的值存到Redis中

//6.登錄成功,將員工id存入Redis并返回登錄成功結(jié)果
redisTemplate.opsForValue().set("administrator",admin.getId());

第三步:在過濾器攔截路徑后取Redis中的值。當然了,別忘了在過濾器類注入RedisTemplate。

//4-1.判斷登錄狀態(tài),如果已登錄,則直接放行
        if(redisTemplate.opsForValue().get("administrator") != null){
            /**
             * 設(shè)置將id存起來
             * */
            Long adminId = (Long) redisTemplate.opsForValue().get("administrator");
            BaseContext.setCurrentId(adminId);
            //放行
            filterChain.doFilter(request,response);
            return;
        }

三、效果演示

先打開Redis桌面管理查看值,在沒有登錄時是沒有值的。如下圖:

啟動項目后我們登錄一下,查看Redis中是否有值。
登錄成功,在攔截器開的情況下也會發(fā)送axios請求查詢數(shù)據(jù)庫數(shù)據(jù)。所以已經(jīng)證明了。

但我們還是看下存到Redis的值,如下圖:

可以看到,已經(jīng)實現(xiàn)了這個功能。使用Redis代替了session起到的作用。所以攔截器自然也知道你是登錄過的,才會讓行讓方法能夠查詢數(shù)據(jù)庫將數(shù)據(jù)顯示到頁面去。

總結(jié)

到這里使用Redis就解決了Session存取存在的跨域問題,也不叫解決session的跨域問題吧,只是換了個思路解決了同樣的問題而已。我相信session也是可以解決這個問題的,應(yīng)該是需要配置一些前端的代碼等。我也不太清楚,但能用我們學習過的知識解決問題那不是更好嗎!Redis用起來也很簡單,也解決了當前的問題,我覺的是一個很不錯的方法。

到此這篇關(guān)于Redis解決跨域存取Session問題的文章就介紹到這了,更多相關(guān)Redis跨域存取Session內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 如何自定義redis工具jar包供其他SpringBoot項目直接使用

    如何自定義redis工具jar包供其他SpringBoot項目直接使用

    這篇文章主要介紹了如何自定義redis工具jar包供其他SpringBoot項目直接使用,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • Redis中Bitmap的使用示例

    Redis中Bitmap的使用示例

    本文主要介紹了Redis中Bitmap的使用示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-05-05
  • Redis協(xié)議具體用法詳解

    Redis協(xié)議具體用法詳解

    在本篇文章中小編給大家整理了關(guān)于Redis協(xié)議具體用法以及相關(guān)內(nèi)容知識點,需要的朋友們學習下。
    2019-06-06
  • redis開啟和禁用登陸密碼校驗的方法

    redis開啟和禁用登陸密碼校驗的方法

    今天小編就為大家分享一篇redis開啟和禁用登陸密碼校驗的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Redis處理高并發(fā)機制原理及實例解析

    Redis處理高并發(fā)機制原理及實例解析

    這篇文章主要介紹了Redis處理高并發(fā)機制原理及實例解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值析,需要的朋友可以參考下
    2020-08-08
  • Redis?腳本和連接命令示例詳解

    Redis?腳本和連接命令示例詳解

    Redis腳本是一種可以實現(xiàn)復雜任務(wù)的腳本語言,可以用來快速履行復雜任務(wù),靈活處理數(shù)據(jù)管理和管理復雜的利用場景,這篇文章主要介紹了Redis?腳本和連接命令,需要的朋友可以參考下
    2023-09-09
  • 淺談Redis常見延遲問題定位與分析

    淺談Redis常見延遲問題定位與分析

    大部分時候,redis延遲很低,但是在某些時刻,有些redis實例會出現(xiàn)很高的響應(yīng)延時,本文主要介紹了淺談Redis常見延遲問題定位與分析,具有一定的參考價值,感興趣的可以了解一下
    2022-06-06
  • Redis特殊數(shù)據(jù)類型bitmap位圖

    Redis特殊數(shù)據(jù)類型bitmap位圖

    這篇文章主要為大家介紹了Redis特殊數(shù)據(jù)類型bitmap位圖,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • 關(guān)于redis的延遲雙刪策略總結(jié)

    關(guān)于redis的延遲雙刪策略總結(jié)

    這篇文章主要介紹了關(guān)于redis的延遲雙刪策略總結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 分布式Redis?Cluster集群搭建與Redis基本用法

    分布式Redis?Cluster集群搭建與Redis基本用法

    這篇文章介紹了分布式Redis?Cluster集群搭建與Redis基本用法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-02-02

最新評論