RailsCookieの開始日と有効期限を設定します


回答:


200

Rails 5ドキュメントからの抜粋:

Cookieは、ActionController#cookiesを介して読み書きされます。

読み取られているCookieはリクエストとともに受信されたものであり、書き込まれているCookieは応答とともに送信されます。Cookieを読み取ると、Cookieオブジェクト自体は取得されず、保持されている値のみが取得されます。

執筆の例:

# Sets a simple session cookie.
# This cookie will be deleted when the user's browser is closed.
cookies[:user_name] = "david"

# Sets a cookie that expires in 1 hour.
cookies[:login] = { value: "XJ-122", expires: 1.hour }

# Sets a cookie that expires at a specific time.
cookies[:login] = { value: "XJ-122", expires: Time.utc(2020, 10, 15, 5) }

# Sets a "permanent" cookie (which expires in 20 years from now).
cookies.permanent[:login] = "XJ-122"

[...]

Cookieを設定するためのオプション記号は次のとおりです。

  • :expires -TimeまたはActiveSupport :: DurationオブジェクトとしてのこのCookieの有効期限。

[...]


23
これはすべてドキュメントにあります:api.rubyonrails.org/classes/ActionDispatch/Cookies.html
Guilherme Garnier

8
@ Senthil、別の記事から何かを取得している場合(この場合は、rails docsから「現状のまま」)、起源への参照を提供してください。
sameera207 2014年

1
また、:expiresオプションはTimeインスタンスである必要があります。 cookies[:login] = { value: "JX-122", expires: 3.months }エラーが発生します。しかし、これはしません。cookies[:login] = { value: "JX-122", expires: 3.months.from_now } 詳細については、github.com
rack

18

あなたの質問はこの質問に関連しているかもしれません: RailsでCookieベースのセッションの有効期限を動的に設定する方法

コメントの1つは、SlideSessionsの非推奨を示しています。

"..アプリケーション内のすべてのコントローラーを介したセッションの有効期限を設定する必要がある場合は、config / intializers /session_store.rbファイルに次のオプションを追加するだけです。

:expire_after => 60.minutes

異なるコントローラーまたはアクションで異なる有効期限を設定する必要がある場合は、次のコードを実際に使用するか、before_filterを使用してください。

request.session_options = request.session_options.dup
request.session_options[:expire_after]= 5.minutes
request.session_options.freeze

ハッシュの複製が必要なのは、少なくとも:expire_afterの変更が可能であり、問​​題なく機能していても、その時点ですでに凍結されているためです...」

それがお役に立てば幸いです。:)


これはActiveRecordセッションストアでも実行できますか?
LohithMV18年

4

現時点では、Cookieの開始時間を設定することは不可能であることに注意してください。Cookieセットは常にすぐにアクティブになります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.