1

単一のタスクが Cookie を設定する単純なコントローラー メソッドがあります。

def consume
    cookies.signed[:luke_luke] = {:value => 'luke'}
    cookies.signed[:remembertoken] = {
      :value => "user",
      :expires => 1.hour.from_now
    }
    render :text => "Failure"
end

IE 9 をロードし、コンソールに document.cookie と入力すると、luke_luke の値だけが返されますが、トークンは覚えていません。記憶トークンの有効期限を削除すると、すべて問題ありません。何を与える?

Rails 3.2.13 の使用

4

1 に答える 1

1

IE <= 9 は、明示的な有効期限が 1.day.from_now 未満の Cookie を破棄します

考えられる回避策は、:remembertoken を設定すると同時に、:remembertoken_expires などの別のタイムスタンプ付き Cookie を設定し、Time.now に対してそのタイムスタンプをチェックし、Time.now > :remembertoken_expires の場合は Cookie を明示的に削除することです。

于 2013-05-29T20:29:20.933 に答える