1. ホーム
  2. node.js

[解決済み] "app.use(express.cookieSession())" に "secret" オプションが必要です。

2022-02-05 21:22:12

質問事項

ウェブサイト を使用するための '秘密' の要件は指定されていません。 app.use(express.cookieSession()); しかし、expressで同じものを使用すると、「secretオプションが必要です」と言われます。なぜですか?

シークレットを指定しても app.use(express.cookieSession({secret: 'abc'})); ブラウザに次のようなエラーが表示されます。

TypeError: Cannot read property 'connect.sess' of undefined

解決方法は?

暗号キーとシークレットを指定しないと、Cookieを使用することができません。Cookieパーサーでsecretを渡すか、もっと凝った方法で、セッション管理を設定するときに必要な値をすべて渡すことができます。後者はより大きな制御を提供し、そのようなものとして、通常、最良のアイデアです。

...
app.use(express.compress());
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.cookieSession({
  key: "mysite.sid.uid.whatever",
  secret: process.env["SESSION_SECRET"],
  cookie: {
    maxAge: 2678400000 // 31 days
  },
}));
...