Rails 쿠키의 시작 날짜 및 만료 날짜 설정


83

특정 날짜에 시작 및 / 또는 만료되도록 Rails 쿠키를 설정하려면 어떻게해야합니까?

답변:


200

Rails 5 문서 에서 발췌 :

쿠키는 ActionController # cookies를 통해 읽고 씁니다.

읽고있는 쿠키는 요청과 함께 수신 된 쿠키이며 작성중인 쿠키는 응답과 함께 전송됩니다. 쿠키를 읽는 것은 쿠키 객체 자체를 가져 오는 것이 아니라 보유하고있는 값만 가져옵니다.

쓰기의 예 :

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

[...]

쿠키 설정을위한 옵션 기호는 다음과 같습니다.

  • :expires -이 쿠키가 만료되는 시간 (Time 또는 ActiveSupport :: Duration 객체).

[...]



8
@Senthil, 다른 기사 (이 경우 rails 문서에서 '있는 그대로')에서 무언가를 얻는 경우 출처에 대한 참조를 제공하십시오.
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/rack/issues/864#issuecomment-104706555
zhisme

18

귀하의 질문은 다음 질문과 관련이있을 수 있습니다. Rails에서 쿠키 기반 세션의 만료 시간을 동적으로 설정하는 방법

주석 중 하나는 Deprecating 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 세션 저장소에서도이 작업을 수행 할 수 있습니까?
Lohith MV

4

현재로서는 쿠키의 시작 시간을 설정하는 것이 불가능하다는 점에 주목할 가치가 있습니다. 쿠키 세트는 항상 즉시 활성화됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.