gpt4 book ai didi

javascript - cookie 解析器中设置的 secret 和 express.js 中的 session 存储是一样的吗?

转载 作者:搜寻专家 更新时间:2023-10-31 23:54:57 25 4
gpt4 key购买 nike

Node.js提供的鉴权示例使用了如下代码:

app.use(express.cookieParser('shhhh, very secret'));
app.use(express.session());

然而,documentation express.js session 使用以下内容:

app.use(cookieParser())
app.use(session({ secret: 'keyboard cat', key: 'sid', cookie: { secure: true }}))

这令人困惑。这两个 secret 是一样的吗?如果我将 session 存储在数据库中,我应该使用哪种方法?

最佳答案

express 3.5.x 版本应该仍然使用连接一些基于 connect module 的库。 .

cookieParser 中间件

connect()
.use(connect.cookieParser('optional secret string'))
.use(function(req, res, next){
res.end(JSON.stringify(req.cookies));
})

接下来是 session 中间件,它默认使用内存存储,如果您想扩展应用程序,请使用 Redis、Mongo 或任何其他数据库进行内存存储:

connect()
.use(connect.cookieParser())
.use(connect.session({ secret: 'keyboard cat', key: 'sid', cookie: { secure: true }}))

阅读有关连接的 session 中间件的更多信息,有两行可以回答您的问题。 ( http://www.senchalabs.org/connect/session.html )

// backwards compatibility for signed cookies
// req.secret is passed from the cookie parser middleware
var secret = options.secret || req.secret;

// ensure secret is available or bail
if (!secret) throw new Error('`secret` option required for sessions');

secret session cookie 使用此 secret 进行签名以防止篡改。所以基本上这些是相同的,但是当您添加了 session 支持时,请删除 cookieParser 中的选项并仅使用 session 中间件中的选项设置。

另请注意,Express 4.x 版本带来了一些中间件更改!

关于javascript - cookie 解析器中设置的 secret 和 express.js 中的 session 存储是一样的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22959621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com