小编Lea*_*ehr的帖子

使用 Typescript 向expressjs中的req对象添加属性

我尝试将我的 Express 服务器代码从 js 迁移到 typescript,并在尝试访问我在自己的中间件函数中添加到请求对象中的字段时遇到了问题。

例如,我正在做这样的事情:

app.use((req, res, next) => {
    let account = checkAuthentication(req);
    if(account) {
        req.authenticated = true;
        req.account = account;
        next();
    }
});
Run Code Online (Sandbox Code Playgroud)

现在我想稍后在其他中间件函数中访问这些属性,但是 @types/express 中的 .d.ts 文件当然以相同的方式为所有中间件函数定义了 req 对象。

现在我想出了两种方法来处理这个问题,但这两种方法似乎都很糟糕:

  1. 在每个中间件函数中使用类型保护。但后来我向 js 输出添加了无用的代码,因为我的路由设置方式使得我在“编译”时知道我的 req 对象在每个中间件函数中具有什么形状。
  2. 在每个中间件函数中使用类型断言。但是,尽管编写了代码以便在编译时了解所有类型,但我并没有获得打字稿的好处,因为那时我基本上禁用了 req 对象的类型检查。

所以我的问题是:在这种情况下,如果有的话,我可以如何利用类型检查?如果我不能,这是否意味着像express这样的框架在静态类型语言(如C#)中是不可能的?

middleware node.js express typescript

5
推荐指数
1
解决办法
3755
查看次数

在Express中签名Cookie

如果我理解cookie签名正确,那么它的作用是:设置cookie时用秘密签名。使用相同的秘密对cookie进行签名,以确认接收它时未更改它。

现在,在expressjs中,res.cookie()可以设置cookie,并且需要使用“签名”布尔值来设置cookie是否应该签名。

现在,用于签名的秘密是什么?我认为它可能使用了提供给的机密cookieParser(),但实际上在文档中的任何地方都没有明确提及。

所以我的问题本质上是:如何设置用于在expressjs中演唱Cookie的秘密?

我确实阅读了快速文档,并在google和stackoverflow中搜索了答案,如果我遗漏了一些明显的内容,对不起。

cookies node.js express

1
推荐指数
1
解决办法
2168
查看次数

标签 统计

express ×2

node.js ×2

cookies ×1

middleware ×1

typescript ×1