簡體   English   中英

在cookie解析器和會話中秘密設置在express.js中存儲相同的東西嗎?

[英]Is secret set in cookie parser and session store the same thing in express.js?

Node.js提供的身份驗證示例使用以下代碼:

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

但是, express.js會話的文檔使用以下內容:

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

這令人困惑。 兩個秘密都一樣嗎? 如果我將會話存儲在數據庫中,我應該使用哪種方法?

快速3.5.x版本仍然應該使用連接一些基於連接模塊的庫。

cookieParser中間件

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

Nex有會話中間件,默認情況下使用內存存儲,如果要擴展應用程序,請使用Redis,Mongo或任何其他數據庫進行內存存儲:

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

閱讀有關connect的會話中間件的更多信息,有兩行可以回答您的問題。 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');

秘密會話cookie使用此秘密簽名以防止篡改。 所以基本上這些是相同的,但是當你添加了會話支持時,刪除cookieParser中的選項並僅使用會話中間件中的選項設置。

另請注意Express 4.x版本帶來了一些中間件更改!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM