0

これは私のセットアップです:

express.js バージョン": "3.0.0rc2"

app.js

...  
app.use(express.cookieParser('secret'));
app.use(express.session({secret: 'secret'}));
app.use(app.router);
...

次に、署名付き Cookie とリダイレクトを設定します。
res.cookie('session', cookie_value, {signed: true}); res.redirect('/else_where');

次に、署名付き Cookie を取得します。
var cookie = req.signedCookies.session;

console.log('get cookie: ' + req.cookies.session);
console.log('get signed cookie: ' + req.signedCookies.session);

問題は、Cookie がundefined署名付き Cookie 用であり、req.cookies.session.

何らかの理由で、Cookie の署名が実行されていません。
何が起こっているのかわからない。
私の順序はapp.use()正しくレイアウトされていますか?

これに似ている

UPDATE_02次のような署名付き Cookie
のシンプルな実装を行いました。res/req

app.configure(function(){
  app.set('port', process.env.PORT || 3000);
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.use(express.favicon());
  app.use(express.logger('dev'));
  app.use(express.cookieParser('secret'));
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(expressValidator);
  app.use(express.session());
  app.use(app.router);
  app.use(express.static(path.join(__dirname, 'public')));
});

app.get('/', function(req, res) {
  if (!req.signedCookies.cat) {
    res.cookie('cat', 'boo', {signed: true});
    console.log('setting cookie');
    res.writeHead(200, {'Content-Type':'text/plain'});
    return res.end('cookie set');
  }

  res.end('signed cookie: ' + req.signedCookies.cat);
});

ブラウザを使用してヒットするlocalhost:3000と、最初の目的の応答が得られますcookie set
ブラウザの Cookie を確認すると、Cookie が設定されています。
同じブラウザを使用してlocalhost:3000再度ヒットすると、同じ応答「cookie set」が表示されます。
リクエストが Cookie で取得されていないようです。

したがって、別のファイルで、上記のコードを正確にコピーして貼り付け、ポートをに切り替えました3080
それが 2 番目の応答を通過すると、「signed cookie: boo」が生成されます。

次に、更新localhost:3000すると、応答はsigned cookie: boo.
なぜこれが起こるのですか?すべきではないキャッシングが行われていますか?
どんな助けでも大歓迎です。

UPDATE_01 Cookie を設定した直後に
を実行しても、返されます。追加の後に一連のランダムな文字と数字が続くため、Cookie は署名されます。割り当てられていませんreq.signedCookies.sessionundefined.req.signedCookies

4

1 に答える 1

1

ブラウザの Cookie は次のとおりです。
boo.o5SqHrxUOZkyNLdIBqIZrfog6jXYJkP78M99IMbrnDA

Express 3.0.3 に更新すると、Cookie は次のようになります。 s:boo.o5SqHrxUOZkyNLdIBqIZrfog6jXYJkP78M99IMbrnDA

更新後、問題は修正されました。

于 2012-11-20T22:43:42.157 に答える