首页 > 解决方案 > 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在应用程序而不是实例之间共享,但我不确定(不幸的是我现在无法测试自己)

标签: node.jsexpress

解决方案


您应该考虑在此处阅读官方文档

基本上app.locals是在整个应用程序中全局访问的属性。因此,基本上每个用户都会看到对这些属性(电子邮件和姓名)的最后分配。

假设有另一条路线 /display 显示这些变量。在用户 2 设置 app.locals 后,用户 1 会转到该路径。用户 1 会看到什么?

他将看到user2信息,因为他/她最后将他/她的信息分配给了属性。


推荐阅读