我正在尝试制作一个简单的登录表单,供用户登录网站,然后将他们的会话数据保存到会话 cookie 中。我正在使用express-session,在他们的文档中它给出了这个作为设置的示例:
app.post('/login', express.urlencoded({ extended: false }), function (req, res) {
// login logic to validate req.body.user and req.body.pass
// would be implemented here. for this example any combo works
// store user information in session, typically a user id
req.session.user = req.body.user
// save the session before redirection to ensure page
// load does not happen before session is saved
req.session.save(function (err) {
if (err) return next(err)
res.redirect('/')
})
})
})
但在我的代码中,我不断在“req.session.user”部分收到错误,其中显示:“属性“用户”在“会话和部分”类型上不存在”,即使我使用的是 Express-Session 文档中完全相同的代码。
我遵循文档中的所有说明,并将其放在程序顶部:
import session from 'express-session';
app.set('trust proxy', 1);
app.use(session({
name: `First_test`,
secret: 'secret_text',
saveUninitialized: true,
resave: true,
cookie: {
secure: false,
maxAge: 960000
}
}));
调试时我可以看到 req.session 内部确实没有“user”属性。
我已经搜索了 google 和 stackoverflow 但没有找到解决方案。我很可能错过了一些小步骤,我希望这里有人可以帮助教育我。
感谢您提前提供的帮助。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
从
@types/express-session包中我们可以看到/** * This interface allows you to declare additional properties on your session object using [declaration merging](https://www.typescriptlang.org/docs/handbook/declaration-merging.html). * * @example * declare module 'express-session' { * interface SessionData { * views: number; * } * } * */ interface SessionData { cookie: Cookie; }因此,您应该在会话对象上声明
user属性,如下所示:declare module 'express-session' { interface SessionData { user: string; } } app.post('/login', express.urlencoded({ extended: false }), function (req, res) { req.session.user = req.body.user })软件包版本:
"express-session": "^1.17.1"