[RUBY-ON-RAILS] 레일에 세션 시간 제한을 설정 3
RUBY-ON-RAILS레일에 세션 시간 제한을 설정 3
이 간단한 것 : 나는 2 분 내 레일 타임 아웃 시간 액티브 레코드 세션을 얻기 위해 노력하고 있어요. 그래서 2 분 동안 내 사용자가 다시 로그인을 갖고 싶어.
난 그냥 내 로컬 dev에 컴퓨터에 레일 서버 (즉, WebBrick)를 실행하고 있습니다.
나는이 설정 / initalizers / session_store.rb에 다음 코드를 함께 할 수있는 뭔가 알고 있지만, 나는 확실히 그것을 못을 박았다 있다고 생각하지 않습니다
CodedOn::Application.config.session_store :active_record_store
CodedOn::Application.configure do
config.action_controller.session = {:expire_after => 2.minutes}
end
이 작동하지 않는 것, 또는 적어도 내 세션 타임 아웃에 나타나지 않습니다. 나는 레일 2.x 또는 3.0에서 변경된 레일에 대해 많은에게 내가 일을 알고있는이 작업을 수행하는 3 방법을 찾을 수 없습니다
밖으로 어떤 하나의 도움이 날 수 있습니까?
해결법
-
==============================
1.난 당신이 활성 기록 저장소가 expire_after 옵션을 구현하지 않기 때문에이 수동을해야 할 것이라 생각합니다. 내 그래서 당신 (I 가정) 필터 전에, 당신은이 작업을 수행해야합니다 :
난 당신이 활성 기록 저장소가 expire_after 옵션을 구현하지 않기 때문에이 수동을해야 할 것이라 생각합니다. 내 그래서 당신 (I 가정) 필터 전에, 당신은이 작업을 수행해야합니다 :
def authenticate if session[:logged_in] reset_session if session[:last_seen] < 2.minutes.ago session[:last_seen] = Time.now else ... authenticate session[:last_seen] = Time.now end end
분명히, 이것은 완전하지 않다, 그러나 그것은 당신에게 기본 아이디어를 줄 것이다.
최신 정보:
이 기능은 버전 2.3 보낸 레일에 존재하는 것으로 보인다. 나는 여기에 관련 코드를 발견했다. 이것은 모든 파생 된 것들에 대한 기본 클래스 역할을한다 AbstractStore입니다. dadooda에서 알 수 있듯이 그래서, 다음과 같은 작업을해야합니다 :
Some::Application.config.session_store :active_record_store, { expire_after: 24.hours, }
-
==============================
2.나는 당신이 시도 할 수있는 간단한 방법으로 이런 짓을 :
나는 당신이 시도 할 수있는 간단한 방법으로 이런 짓을 :
귀하의 설정 / 초기화 / 단지 이렇게 session_store.rb :
Yourapp::Application.config.session_store :cookie_store, :key => "_yourapp_session", :expire_after => 2.minutes
이 미세하게 나를 위해 노력하고, 희망은 당신을 위해 작동합니다.
-
==============================
3.당신은 수동으로해야한다. 여기에 액티브 세션 클래스 메소드를 작성하는 예입니다. 당신은 정기적으로 전화를 루퍼스 - 스케줄러 및 / 또는 DelayedJob를 사용할 수 있습니다.
당신은 수동으로해야한다. 여기에 액티브 세션 클래스 메소드를 작성하는 예입니다. 당신은 정기적으로 전화를 루퍼스 - 스케줄러 및 / 또는 DelayedJob를 사용할 수 있습니다.
class Session < ActiveRecord::Base def self.sweep(time = 1.hour) if time.is_a?(String) time = time.split.inject { |count, unit| count.to_i.send(unit) } end delete_all "updated_at < '#{time.ago.to_s(:db)}' OR created_at < '#{2.days.ago.to_s(:db)}'" end end
이 중요한 이유에 대한 자세한 배경 : http://guides.rubyonrails.org/security.html#session-expiry
-
==============================
4.mosch는 말합니다 :
mosch는 말합니다 :
더 이상이 방법 보인다. : expire_after은 레일 3.2.11에서 나를 위해 일한 :
Some::Application.config.session_store :active_record_store, { key: "some_session_id", domain: ".isp.com", expire_after: 24.hours, }
응용 대한 모든 요청 후 쿠키 자동 연장합니다. 세션은 브라우저 종료를 통해 지속됩니다.
나는 간단한 SSO 기능을위한 도메인에서 세션을 "세계화"에 위의 트릭은, 지금까지 작동하는 것 같다 않았다.
-
==============================
5.만료 시간.
만료 시간.
MAX_SESSION_TIME = 60 * 60 before_filter :prepare_session def prepare_session if !session[:expiry_time].nil? and session[:expiry_time] < Time.now # Session has expired. Clear the current session. reset_session end # Assign a new expiry time, whether the session has expired or not. session[:expiry_time] = MAX_SESSION_TIME.seconds.from_now return true end
-
==============================
6.그냥 모델에서 timeout_in 방법을 추가하고 트릭을 수행해야합니다
그냥 모델에서 timeout_in 방법을 추가하고 트릭을 수행해야합니다
def timeout_in 2.minutes end
from https://stackoverflow.com/questions/5860950/setting-session-timeout-in-rails-3 by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 유효성 하나 개의 필드의 존재 또는 다른 (XOR) (0) | 2020.02.08 |
---|---|
[RUBY-ON-RAILS] 루비 온 레일즈 모델 내에서 CURRENT_USER 액세스 (0) | 2020.02.08 |
[RUBY-ON-RAILS] 어떻게 루비에서 라틴 문자 악센트 대체 할 수 있습니까? (0) | 2020.02.08 |
[RUBY-ON-RAILS] 레일 : 인덱스 fields_for? (0) | 2020.02.08 |
[RUBY-ON-RAILS] 레일에서 다른 웹 사이트로 컨트롤러에서 POST 데이터를 제출 (0) | 2020.02.08 |