node.js - 用户/网站是否可以访问 express res.locals 变量?
问题描述
我目前正在使用 Express 和 Passport 创建一个 Node 应用程序,并在我的主 server.js 文件中使用这个中间件:
// Function to protect urls
function isProtected(req, res, next) {
if (req.isAuthenticated()) {
// User is logged in
res.locals.user = req.user;
return next();
}
// User is not logged in. Redirect to login.
res.redirect('login');
}
app.use('/protected_path', isProtected, protectedRouter);
我的问题针对这一行:
res.locals.user = req.user;
用户对象被传递给 res.locals,因此它可用于填充名称、用户角色、注册日期等字段...
有没有办法让用户/网站/api 程序(如 Postman)访问“res.locals”变量?req.user 对象中可能有一些敏感数据,我只想使用“res.locals”来获取将在个人资料页面等视图中呈现的数据。
我可以将必要的变量传递给 res.locals ,但这会变得非常混乱。
我的最后一种方法是将此处描述的不必要变量“列入黑名单”:SO: How to omit specific properties from an object in JavaScript
用户可以访问 res.locals 变量,因此它是否与安全相关?如果不是,我会更喜欢我目前的解决方案。
解决方案
res.locals
不,除非您以视图或其他方式自己将它们提供给他们,否则他们无法访问。一些细节可以在文档中找到。
推荐阅读
- excel - Office.js Excel Online 加载资源失败:functions.json
- php - 返回 PHP 和 MySQL Telegram Bot
- php - Netlify 表单提交但在表单提交后显示“错误:--success msg--”
- firebase - 如何处理以下空安全?该函数不能无条件调用,因为它可以为“null”。尝试添加一个空检查('!')
- javascript - 视频自动播放不适用于 React。帮我?
- nuget-package - Nuget 包文件在构建后事件后重新出现
- python - 用 M2M 关系覆盖 validate_unique
- typescript - Array.prototype.sort() 的 Typescript 模型返回类型
- javascript - 获取导航栏/子菜单的单击数组项
- javascript - 根据值获取下一个元素