2013-10-17 2 views
1

것은 내가 사용자가 로그인하는 것을보고 싶습니다 로그인 한 사용자의 4. 가져 오기 목록을 레일에 서명이유증 3.11. 내 관리 인터페이스에서 오전 때

  • 사용자 이름과 같은

    , ?

  • 엘비스는 더
  • 쳇 베이커, 아니
  • 마이클 잭슨, 아니
  • 허비 행콕, 예
  • 저스틴 비버 (Justin Bieber), 고안 사용 예
  • , 나는 추적 가능한 기능을 추가하지

    내 이동

    t.integer :sign_in_count, :default => 0 
    t.datetime :current_sign_in_at 
    t.datetime :last_sign_in_at 
    t.string :current_sign_in_ip 
    t.string :last_sign_in_ip 
    

    사용자가 :current_sign_in_at으로 로그 아웃하고 :current_sign_in_ip이 nil로 설정되지 않은 경우 문제가 발생합니다.

    나는 사용자가 로그 아웃 할 때

    def destroy 
        current_user.current_sign_in_at = nil 
        current_user.save 
        signed_out = (Devise.sign_out_all_scopes ? sign_out : sign_out(current_user)) 
        set_flash_message :notice, :signed_out if signed_out 
        redirect_to root_url 
        end 
    

    가 이제 current_sign_in_at가 업데이트 내 sessions_controller.rb이 추가되었습니다.

    그런 다음 :timeoutable mpdule을 추가했습니다. 세션이 시간 초과되면 current_sign_in_at이 업데이트되지 않습니다.

    이 모든 해킹이 끝난 후, 나는 wounder를 시작합니다. 이렇게하는 것이 더 우아한 방법을 고안하지 않습니까?

    답변

    0

    조금 어렵습니다. 그것은 밖으로 사용자 징후가 밖으로 전무에 쉽게 경우

    는 'current_sign_in_at'

    그것은 조금 더 열심히 할 때 세션 시간 초과입니다. 시간 초과 후 사용자가 입력을 시도하면 warden.logout이 세션에 나타나며 사용자는 다시 로그인해야합니다. 사용자가 아무것도하지 않거나 브라우저를 닫으면 서버가 아는 한 로그인 상태가됩니다. A : :

    우리가해야 할 것이 작업을하려면 ENV에 대한 클라이언트 브라우저 [ '소장'] 질문 B 모든 시간을 session.last_request_at :. 세션 : 레이크 DB '와 세션 테이블을 만들기 '이것을 session_store.rb 초기화 프로그램에 넣으십시오.

    Squadlink::Application.config.session_store :active_record_store 
    

    그런 다음 세션을 서버에서 제어 할 수 있습니다. 지금은

    내가이

    설정/초기화/warden.rb

    Warden::Manager.before_logout do |record, warden, opts| 
        if record.respond_to?(:logout_stamp!) 
        record.logout_stamp! 
        end 
    end 
    

    모델/사용자했다.

    def logout_stamp! 
        self.current_sign_in_at = nil 
        self.current_sign_in_ip = nil 
        self.save 
    end 
    

    경우 rb 그리고

    current_user.current_sign_in_at = nil 
    current_user.save 
    

    선이 sessions_controller 조치를 파괴 형성 제거.

    사용자가 로그 아웃하거나 로그 아웃 한 경우 'current_sign_in_at'및 'current_sign_in_ip'가 nil로 설정됩니다.

    누군가 도움이되기를 바랍니다.