6

ログインフォームに「remember me」機能を実装しようとしています。ほとんどのサイトはこれをどのように行っていますか? チェックボックスがオンになっていると、ほとんどのサイトがセッション Cookie の有効期限または max-age フィールドを動的に変更すると想定しています。

では、Remember Me チェックボックスが選択されているかどうかに応じて、Cookie の持続時間を動的に変更するにはどうすればよいでしょうか?

これまでのところ、私は持っています:

if (req.body.remember)
{
    var thirtyDays = 30*24*60*60*1000;
    req.session.cookie.expires = new Date(Date.now() + thirtyDays);
    req.session.cookie.maxAge = thirtyDays;
}
else
{
    req.session.cookie.expires = false;
    req.session.cookie.maxAge = false;
}

console.log(req.session.cookie.expires, req.session.cookie.maxAge)

これは機能します。しかし、私は私を覚えていないことを選択することはできません。何らかの理由で、Cookie は永久に残ります。cookie (chrome) を削除し、remember me フィールドをチェックせずにログインした後でも、Web インスペクタの cookie パネルにセッションであり、console.log が表示されていると表示されていても、ブラウザのセッションを閉じても残ります。私「偽、偽」。

私は明らかに何か間違ったことをしています。どうすれば正しくできますか?

前もって感謝します!:)

編集

上記のコードは実際に機能しているようです。動作していないように見えるのは、Chrome を再起動するときにブラウザのタブを再度開くオプションがあったためです。これにより、Chrome はブラウザ セッション Cookie を決して削除せず、Cookie の有効期限を false に設定してもブラウザ セッション Cookie は作成されないと思いました。

4

1 に答える 1

4

HTTP Cookie の Expires および Max-Age ディレクティブに従って、Cookie のexpires日付をエポック時間 (または現在より前の日付) に設定し、maxAge を 0 に設定できます。

req.session.cookie.expires = new Date(0);
req.session.cookie.maxAge = 0;
于 2013-07-17T05:00:01.340 に答える