2013-11-27 4 views
0

밤마다 오후 9 시경에 원할 때 CLI에서 호출되는 모든 활성 세션을 삭제하는 rake 작업 또는 도구를 구축하고 싶습니다.특정 시간에 세션을 강제로 닫을 수 있습니까?

내가 고안이 타임 아웃을 지정할 수있는 기능을 가지고 있음을 발견했다. 나는 사용자 세션에 대해 Devise를 사용합니다. 1 시간 이상 시스템이 비활성 상태 임에도 불구하고 사용자의 약 3 분의 1 세션 시간이 초과되지 않습니다.

나는 내가 필요로하는 작업의 종류를 알 수 없습니다. 피드백은 플러스가 될 것입니다. 문서 링크도 있습니다. 또한 세션을 대상으로하는 방법을 알아낼 수 없습니다. 레일즈 가이드 등은 한 사용자의 세션 또는 모든 서버 - 클라이언트 세션을 파괴하는지에 관해 명확하지 않습니다. 모든 클라이언트 - 서버 세션을 비활성화해야합니다. 문서는 훌륭하지만 좋은 설명이 맘에 들어.

+0

특정 시간에 세션을 항상 재설정하려는 이유가 무엇인지 확신하지 못합니다. 사용자가 자신의 사용자 이름과 비밀번호를 기억하도록 강요하는 것은 결코 쉬운 일이 아닙니다. 어쨌든,이 다른 질문은 당신을 도움이 될 것입니다 http://stackoverflow.com/questions/16406208/how-can-i-reset-all-devise-sessions-so-every-user-has-to-login-again – Ashitaka

+0

'타임 카드'시스템. 그것은 그들이 자신의 자격 증명을 기억하도록 강요하는 것이 아니라 로그인 시간을 추적하는 것에 관한 것입니다. 그러나 로그 아웃하지 않으면 그 요점은 모두 사라집니다. 나는 세션 변경에 대한 생각을 좋아하지만 config/initializers/session_store 스크립트를 실제로 수동으로 변경해야 할 것 같습니다. 내 첫 번째 생각은 무작위로 생성 된 키 값으로 스크립트를 자동으로 변경하는 것입니다. 그러나 버전 컨트롤이 창 밖으로 나옵니다. 당신 주위에 어떤 방법이 있습니까? – Crash

+0

하지만 강제로 로그 아웃하면 사용자가 실제로 로그 아웃 한 시간을 알 수 없습니다. 내게 정말로 필요한 것은 로그인 시간을 추적하는 것입니다. – Ashitaka

답변

1

당신은 당신의 secret_key ENV 변수에 저장할 수 있습니다. 사실 secret_token은 소스 컨트롤에서 멀리 떨어져 있어야합니다. 따라서 런타임에 변경할 수있는 ENV 변수가 있어야합니다. 이와 같이 :

YourApp::Application.config.secret_token = ENV['SECRET_TOKEN'] 

보안 토큰을 만들려면 SecureRandom.hex (64)를 사용해야합니다.

어쨌든

, 당신이 원하는 모든 사용자가 사이트를 방문 할 때, 당신은 특정 작업하기 전에 실행 before_filter을 만들 수 추적 경우. 간단한 예는 다음과 같습니다.

+0

아직 더 중요한 프로젝트가 할당 되었기 때문에 이것을 테스트 할 기회가 없었지만 이것이 필요한 것 같아요. 이것을 내 답변으로 표시하고 다시 한 번 감사드립니다! – Crash

0

당신이 세션을 저장하기 위해 memcache를 사용하는 경우 당신이 그것을 다시 시작 크론 작업을 생성 할 수 있습니다.

관련 문제