记录一下,关于我遇到的express-session无法存值的情况

前言

由于是小白一枚,所以在学习的时候难免磕磕碰碰,有时候一些傻x的问题也能够自己折腾好久。所以为了让更多的学习者多条思路,稍微记录一下自己犯得低级错误。

正文

初学node开发,纯粹兴趣,结果卡在了验证session这里,因为发现无法往session储存信息,百度各种找,各种方法试过去,结果还是不行。

代码大概这样:
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,改各种配置,发现在服务器端怎么配置都无法存进入
于是这时候我就觉得应该不是配置的问题了,肯定有一个我想不到的地方不对,究竟是什么地方。。。
于是我换个思路,现在我一直认为问题在于无法存入值到session, 有没有可能,值已经存进去了,但是发起请求的时候创建了一个新的session呢?
这时候就需要知道上一个session与当前session是否改变,这很好判断嘛, 用session id
当下把session id log出来看一下,发现果然每次的session id都不一致,这是为什么呢?
又扒拉扒拉的百度谷歌,又还是不行,这时候有点心灰意冷啊
于是
我又要换个思路去解决问题 [滑稽脸]
既然session id不断改变,也可以是浏览器端的问题啊
问题就出在这里了
因为我浏览器端用的是react框架,也是新上手的(刚看完新手教程那种)
所以对很多事情都不清楚,就比如 - - > 鬼知道 isomorphic-fetch 默认不操作cookie的啊
所以问题就在于fetch的时候,返回的cookie没有被保存,导致了每次发起请求的时候都没带cookie,所以每次请求的时候都是新的会话
需要在fetch的时候加上credentials的参数

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

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

后话

这个事情告诉我们。文档还是要看的。。。尽管看不懂英语。。。

你可能感兴趣的:(记录一下,关于我遇到的express-session无法存值的情况)