node.js - Express app.locals 是否跨请求共享?
问题描述
我有这个疑问:假设用户导航到路径/test?token=somelongstring
。此路径在渲染视图之前设置两个app.locals
,例如:
app.locals.email: "test-user-email" + user.email;
app.locals.name: "test-user-name" + + user.name;
该user
变量是使用令牌查询字符串变量从 API 中获取的。
比另一个用户使用不同的令牌进入相同的路径,用他的值设置这两个变量。
现在,假设有另一条路线/display
显示这些变量。在用户 2 设置app.locals
. 用户 1 会看到什么?他会看到他的价值观还是 user2 的价值观?我想 user2,因为app.locals
在应用程序而不是实例之间共享,但我不确定(不幸的是我现在无法测试自己)
解决方案
您应该考虑在此处阅读官方文档
基本上app.locals
是在整个应用程序中全局访问的属性。因此,基本上每个用户都会看到对这些属性(电子邮件和姓名)的最后分配。
假设有另一条路线 /display 显示这些变量。在用户 2 设置 app.locals 后,用户 1 会转到该路径。用户 1 会看到什么?
他将看到user2
信息,因为他/她最后将他/她的信息分配给了属性。
推荐阅读
- python - 如何按 Django 的版本数过滤书籍?
- php - SEO 友好的 url 在服务器中不起作用,但在 cpanel 中起作用
- angularjs - 等待 AngularJS 服务完成运行(chrome 控制台)
- alpine.js - 高山表达式错误:无法设置 null 的属性(设置“_x_dataStack”)
- r - 以动态 n 移动(领先/落后的位置数)
- c++ - 是否可以在 C++ 中的类的每个实例中调用一个函数
- google-drive-api - 当在短时间内将许多请求放入垃圾邮件时,Google Drive API 是否会自动增加响应时间?
- c# - 用于在 EF Core 中与数据库通信的安全性
- sql - Sql 按字符串和 int 排序
- typescript - 按值映射数组