記錄一下,關(guān)于我遇到的express-session無(wú)法存值的情況

前言

由于是小白一枚,所以在學(xué)習(xí)的時(shí)候難免磕磕碰碰,有時(shí)候一些傻x的問(wèn)題也能夠自己折騰好久。所以為了讓更多的學(xué)習(xí)者多條思路,稍微記錄一下自己犯得低級(jí)錯(cuò)誤。

正文

初學(xué)node開(kāi)發(fā),純粹興趣,結(jié)果卡在了驗(yàn)證session這里,因?yàn)榘l(fā)現(xiàn)無(wú)法往session儲(chǔ)存信息,百度各種找,各種方法試過(guò)去,結(jié)果還是不行。

代碼大概這樣:
const express = require('express')
const app = express()

let session = require('express-session')
app.use(session({
  name: 'user',
  secret: 'test',
  cookie: {
    maxAge: 60 * 60 * 1000,
    secure: false
  },
  resave: true,
  saveUninitialized: true
}))

app.get('/', function (req, res) {
  req.session.username = '1234'
  res.send({ desc: 'OK.' }) 
})
...

大概搞了大半天,加cookie-parser,改各種配置,發(fā)現(xiàn)在服務(wù)器端怎么配置都無(wú)法存進(jìn)入
于是這時(shí)候我就覺(jué)得應(yīng)該不是配置的問(wèn)題了,肯定有一個(gè)我想不到的地方不對(duì),究竟是什么地方。。。
于是我換個(gè)思路,現(xiàn)在我一直認(rèn)為問(wèn)題在于無(wú)法存入值到session, 有沒(méi)有可能,值已經(jīng)存進(jìn)去了,但是發(fā)起請(qǐng)求的時(shí)候創(chuàng)建了一個(gè)新的session呢?
這時(shí)候就需要知道上一個(gè)session與當(dāng)前session是否改變,這很好判斷嘛, 用session id
當(dāng)下把session id log出來(lái)看一下,發(fā)現(xiàn)果然每次的session id都不一致,這是為什么呢?
又扒拉扒拉的百度谷歌,又還是不行,這時(shí)候有點(diǎn)心灰意冷啊
于是
我又要換個(gè)思路去解決問(wèn)題 [滑稽臉]
既然session id不斷改變,也可以是瀏覽器端的問(wèn)題啊
問(wèn)題就出在這里了
因?yàn)槲覟g覽器端用的是react框架,也是新上手的(剛看完新手教程那種)
所以對(duì)很多事情都不清楚,就比如 - - > 鬼知道 isomorphic-fetch 默認(rèn)不操作cookie的啊
所以問(wèn)題就在于fetch的時(shí)候,返回的cookie沒(méi)有被保存,導(dǎo)致了每次發(fā)起請(qǐng)求的時(shí)候都沒(méi)帶cookie,所以每次請(qǐng)求的時(shí)候都是新的會(huì)話
需要在fetch的時(shí)候加上credentials的參數(shù)

  fetch('http://www.xxx.com/', {credentials: 'include'})
    .then(res -> {...})

如果你也是存不了session,或者你可以看看session id

后話

這個(gè)事情告訴我們。文檔還是要看的。。。盡管看不懂英語(yǔ)。。。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容