gpt4 book ai didi

node.js - 请求 cookie 未按预期返回 Express session 数据

转载 作者:IT王子 更新时间:2023-10-29 06:14:01 31 4
gpt4 key购买 nike

我正在尝试构建一个基本的登录功能并测试它是否创建了一个我以后可以使用的 session 。我正在使用 express-session 和 redis 来保存 session 数据。这是我的设置:

app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended: true}))
app.use(express.static(path.join(__dirname, 'client/build')))

app.use(cookieParser(process.env.COOKIE_SECRET))
app.use(session({
store: new redisStore({
host: '127.0.0.1',
port: 6379
}),
secret: process.env.SESSION_SECRET,
cookie: {maxAge: 1800},
name: 'appName',
resave: false,
saveUninitialized: false
}))

app.use('/', routes)

然后是我的登录路径:

router.post('/api/login', (req, res) => {
req.session.userId = req.body.id
req.session.email = req.body.email

//do I need to send out a cookie with the session created here?
res.set({'Set-Cookie': 'appSession=' + req.session.id})
res.status(200).send({
"message": `User ${req.body.id} logged in with cookie ${req.session.id}`
})
})

那么据我所知,我应该能够读取并添加到此 session 中,以获取我发回 cookie 的任何请求。这是我用来测试的 API:

router.post('/api/test' (req, res) => {
if(req.session && req.session.userId) {
res.status(200).send({"message": `User ID ${req.session.userId} is authenticated`})
} else {
res.status(401).send({"message": `User ID ${req.session.id} is not authenticated`})
}
})

我正在使用在 api/login 路由中创建的 sessionID 使用 Postman 向此 API 发送请求, header 为 Cookie: appName=${sessionID}。这总是会创建一个新的 sessionId 并返回 401。

我的理解对吗?如果是这样,我该如何创建这种预期的行为?

最佳答案

我现在得到了这个问题的答案 - 互联网上的其他来源有一些我认为不清楚的地方。

首先,如果您在使用 express-session 时遇到问题,通过使用 DEBUG=express-session node server.js 运行服务器来调试问题很有用

当我这样做时,我意识到 express-session 没有找到创建的 session 。这是因为我以秒而不是毫秒为单位设置 maxAge 属性,所以它会立即过期。白痴。

然后还有一个问题。尝试检索 session 时,我得到以下调试输出:

  express-session cookie unsigned +1ms
express-session no SID sent, generating session +1ms

这是 cookie 解析器没有找到我的 SessionId,因为 cookie 解析器需要使用与 express-session 相同的键。同样,回想起来很明显。

希望这对遇到同样错误的人有所帮助。

关于node.js - 请求 cookie 未按预期返回 Express session 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40610968/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com