【发布时间】:2020-12-20 02:10:10
【问题描述】:
我在登录时设置了一个名为 user 的会话变量:
req.session.authenticated_user = user;
当我稍后再次设置会话时,它不会更新:
req.session.authenticated_user = somenewvalue;
这仍将包含user 的原始值。应用模块:
var session = require('express-session');
var redisStore = require('connect-redis')(session);
var redisClient = redis.createClient();
const sessionMiddleware = session({ secret: 'foo' });
app.use(session({
store: new redisStore({ client: redisClient }),
secret: 'secretsession',
resave: false,
saveUninitialized: true,
cookie: { secure: false, sameSite: true, expires: 7200000 }
}))
app.use('/users', sessionChecker, usersRouter);
我的路由器:
var express = require('express');
var router = express.Router();
var user_controller = require('../controllers/userController')
/* GET user update. */
router.get('/user_login/login', user_controller.user_login_get);
/* POST user update. */
router.post('/user_login/login', user_controller.user_login_post);
/* GET user update. */
router.get('/:username/update', user_controller.user_update_get);
/* POST user update. */
router.post('/:username/update', user_controller.user_update_post);
如何更新节点中的会话变量?
【问题讨论】:
-
请显示您正在更新会话的实际路由处理程序代码(整个路由处理程序)。另外,请告诉我们您是使用默认内存存储还是其他存储进行快速会话,因为某些存储要求您调用
req.session.save()来提交更改,或者您是否在异步完成回调中进行更改。 -
正如我之前所问的,请在您尝试更新会话的位置显示实际的路由处理程序代码。并且,您是否尝试在修改会话后拨打
req.session.save()?