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

Redis解決跨域存取Session問(wèn)題

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

前言

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

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

一、遇到的情況

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

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

但在頁(yè)面中打開f12,點(diǎn)開應(yīng)用會(huì)發(fā)現(xiàn)沒(méi)有存儲(chǔ)session的信息。

session中沒(méi)有存入的值

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

二、解決問(wèn)題

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

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

2.1 配置yml文件

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

2.2 啟動(dòng)Redis

將Redis服務(wù)器打開

2.3 代碼編寫

第一步:注入RedisTemplate

@Autowired
private RedisTemplate redisTemplate;

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

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

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

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

三、效果演示

先打開Redis桌面管理查看值,在沒(méi)有登錄時(shí)是沒(méi)有值的。如下圖:

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

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

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

總結(jié)

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

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

相關(guān)文章

  • 簡(jiǎn)介Redis中的showlog功能

    簡(jiǎn)介Redis中的showlog功能

    這篇文章主要介紹了簡(jiǎn)介Redis中的showlog功能,作者同時(shí)對(duì)比了DEL命令的性能,需要的朋友可以參考下
    2015-06-06
  • Redis保證數(shù)據(jù)不丟失的兩種方法

    Redis保證數(shù)據(jù)不丟失的兩種方法

    Redis 實(shí)現(xiàn)數(shù)據(jù)不丟失的關(guān)鍵在于使用了多種持久化機(jī)制,以確保數(shù)據(jù)在內(nèi)存和磁盤之間的持久性,本文給大家介紹了Redis保證數(shù)據(jù)不丟失的兩種方法,持久化和集群運(yùn)行,我們分別來(lái)看它們兩的具體實(shí)現(xiàn)細(xì)節(jié),感興趣的同學(xué)跟著小編一起來(lái)看看吧
    2023-11-11
  • 寶塔中ThinkPHP框架使用Redis的一系列教程

    寶塔中ThinkPHP框架使用Redis的一系列教程

    關(guān)于redis的安裝,在服務(wù)器或者虛擬機(jī)上安裝寶塔面板安裝redis,這樣很簡(jiǎn)單就可以使用redis了,記得安裝redis的時(shí)候不僅要安裝redis軟件,還要進(jìn)入項(xiàng)目使用的php版本中安裝redis擴(kuò)展,然后開啟redis軟件
    2023-03-03
  • Redis內(nèi)存碎片原理深入分析

    Redis內(nèi)存碎片原理深入分析

    這篇文章主要為大家介紹了Redis內(nèi)存碎片原理深入分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • 如何通過(guò)redis減庫(kù)存的秒殺場(chǎng)景實(shí)現(xiàn)

    如何通過(guò)redis減庫(kù)存的秒殺場(chǎng)景實(shí)現(xiàn)

    本文通過(guò)解決秒殺系統(tǒng)中的一個(gè)場(chǎng)景即數(shù)據(jù)預(yù)加載,即把庫(kù)存數(shù)據(jù)事先加載到緩存,然后通過(guò)緩存來(lái)更新庫(kù)存,簡(jiǎn)單介紹了如何通過(guò)redis減庫(kù)存的秒殺場(chǎng)景實(shí)現(xiàn),感興趣的可以了解一下
    2022-06-06
  • redis部署及各種數(shù)據(jù)類型使用命令詳解

    redis部署及各種數(shù)據(jù)類型使用命令詳解

    這篇文章主要介紹了redis部署及各種數(shù)據(jù)類型使用命令,編譯安裝redis及部署過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • 淺談Redis跟MySQL的雙寫問(wèn)題解決方案

    淺談Redis跟MySQL的雙寫問(wèn)題解決方案

    項(xiàng)目中有遇到這個(gè)問(wèn)題,跟MySQL中的數(shù)據(jù)不一致,記錄一下,本文主要介紹了Redis跟MySQL的雙寫問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 使用Docker部署Redis并配置持久化與密碼保護(hù)的詳細(xì)步驟

    使用Docker部署Redis并配置持久化與密碼保護(hù)的詳細(xì)步驟

    本文將詳細(xì)介紹如何使用 Docker 部署 Redis,并通過(guò) redis.conf 配置文件實(shí)現(xiàn)數(shù)據(jù)持久化和密碼保護(hù),適合在生產(chǎn)環(huán)境中使用,文章通過(guò)代碼示例講解的非常詳細(xì),需要的朋友可以參考下
    2025-03-03
  • Redis分布式緩存的安裝

    Redis分布式緩存的安裝

    這篇文章主要介紹了Redis分布式緩存的安裝,Redis?是一個(gè)開源(BSD許可)的,內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)系統(tǒng),它可以用作數(shù)據(jù)庫(kù)、緩存和消息中間件,需要的朋友可以參考下
    2023-05-05
  • Redis?抽獎(jiǎng)大轉(zhuǎn)盤的實(shí)戰(zhàn)示例

    Redis?抽獎(jiǎng)大轉(zhuǎn)盤的實(shí)戰(zhàn)示例

    本文主要介紹了Redis?抽獎(jiǎng)大轉(zhuǎn)盤的實(shí)戰(zhàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12

最新評(píng)論

嵩明县| 盱眙县| 改则县| 赫章县| 拉孜县| 民丰县| 泸溪县| 甘谷县| 南昌县| 长垣县| 梨树县| 大悟县| 靖边县| 登封市| 体育| 长寿区| 云林县| 陵水| 巴林右旗| 文化| 靖江市| 乐昌市| 鲁甸县| 郯城县| 泾源县| 托里县| 南丰县| 延津县| 金坛市| 盘锦市| 惠来县| 江津市| 金寨县| 保山市| 任丘市| 晋宁县| 集贤县| 黔南| 会理县| 赤壁市| 新安县|