Set start date and expiration date for Rails cookies

后端 未结 3 645
故里飘歌
故里飘歌 2020-11-27 10:14

How do I set a Rails cookie to start and/or expire at a certain date?

相关标签:
3条回答
  • 2020-11-27 10:58

    your question might be related to this question: How to I dynamically set the expiry time for a cookie-based session in Rails

    one of the comments points to Deprecating SlideSessions:

    "..If you need to set expiration period for sessions through all controllers in your application, simply add the following option to your config/intializers/session_store.rb file:

    :expire_after => 60.minutes
    

    If you need to set different expiration time in different controllers or actions, use the following code in action or some before_filter:

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

    Duplication of the hash is needed only because it is already frozen at that point, even though modification of at least :expire_after is possible and works flawlessly..."

    I hope that helps. :)

    0 讨论(0)
  • 2020-11-27 11:04

    Excerpts from Rails 5 documentation:

    Cookies are read and written through ActionController#cookies.

    The cookies being read are the ones received along with the request, the cookies being written will be sent out with the response. Reading a cookie does not get the cookie object itself back, just the value it holds.

    Examples of writing:

    # 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"
    

    [...]

    The option symbols for setting cookies are:

    • :expires - The time at which this cookie expires, as a Time or ActiveSupport::Duration object.

    [...]

    0 讨论(0)
  • 2020-11-27 11:04

    It's worth noting that as of right now it is impossible to set a start time for a cookie. A cookie set is always active immediately.

    0 讨论(0)
提交回复
热议问题