我想構建一個基本的登錄功能,並測試它創建一個會話,我可以稍後使用。我正在使用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.
我的理解是否正確?如果是這樣,我該如何創建這種預期的行爲?