在Express中签名Cookie

Lea*_*ehr 1 cookies node.js express

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

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

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

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

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

小智 5

Express确实会使用提供的秘密cookie-parser对您的Cookie进行签名。Cookie解析器会将机密信息注入您的request对象。然后,express将使用它来签名cookie。如果没有提供任何秘密给cookie-parser(或其他中间件),那么在尝试设置新的签名cookie时,express将抛出错误

回答您的问题,这就是您应该如何设置机密(使用cookie-parser):

var express = require('express')
var cookieParser = require('cookie-parser')

var app = express()
app.use(cookieParser('your-secret'))

app.get('/', (req, res, next) => {
  res.cookie('name', 'value', { signed: true })
  res.json({})
})
Run Code Online (Sandbox Code Playgroud)

然后它将在中可用req.signedCookies