我想构建一个基本的登录功能,并测试它创建一个会话,我可以稍后使用。我正在使用express-session和redis来保存会话数据。这里是我的设置:请求cookie不返回按预期方式快速会话数据
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}`
})
})
然后,它是我的理解,我应该能够读取并加入到这个会话在那里我将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`})
}
})
我发送给使用邮差用头Cookie: appName=${sessionID}
使用在api/login
路线创建的会话ID这个API的请求。这总是创建一个新的sessionId并返回401.
我的理解是否正确?如果是这样,我该如何创建这种预期的行为?