【问题标题】:Where is req.variable stored?req.variable 存储在哪里?
【发布时间】:2021-07-30 21:55:28
【问题描述】:

类似的问题(但不是重复的):How do i store request-level variables in node.js?

考虑以下代码:

const express = require('express');
const app = express();

app.get('/', (req, res) => {
   req.someVariable = "Hello";
   res.send(req.someVariable + ' world!');
});

req.someVariable 存储在哪里?在饼干里?这仅适用于用户还是所有人?另外,这些和将它们存储在会话/cookie中有什么区别?

【问题讨论】:

    标签: node.js express variables cookies req


    【解决方案1】:

    除了 req 只是一个存储在内存中的 javascript 对象变量之外,请注意 express 有一个 res.locals 对象变量在请求/响应周期中持续存在。

    如果您想存储任何用户信息,您应该使用res.locals 对象,以免意外覆盖其他重要对象。

    res.locals

    一个对象,其中包含范围为 请求,因此仅可用于期间呈现的视图 该请求/响应周期(如果有)。否则,此属性为 与 app.locals 相同。 此属性对于公开请求级信息很有用,例如请求路径名称、经过身份验证的用户、用户设置和 以此类推。

    http://expressjs.com/en/5x/api.html#res.locals

    app.use(function (req, res, next) {
      res.locals.user = req.user
      res.locals.authenticated = !req.user.anonymous
      next()
    })
    

    注意:res.locals 本身不会与响应一起发送(例如res.send)。它只能在您的 nodejs 应用程序中访问。

    Cookies

    Cookie 是您想要发送到客户端浏览器的信息位(存储在浏览器内存中)。然后,客户端可以将 cookie 发送回您的 nodejs 应用程序。这些与reqres 属性不同。

    Cookie 可以存储例如身份验证令牌,该令牌可以存储在客户端的浏览器中,并在每次请求时提供给 nodejs 应用程序。

    为了安全,您可以使用浏览器 javascript 无法修改的 httpOnly cookie。

    【讨论】:

    • 那么req.locals 存储在哪里?
    猜你喜欢
    • 2011-08-14
    • 2023-04-03
    • 2018-04-29
    • 2010-11-02
    • 2016-10-22
    • 2012-05-23
    • 2011-06-26
    • 2013-02-06
    • 1970-01-01
    相关资源
    最近更新 更多