Devise - Złóż żądanie bez resetowania odliczania do czasu wylogowania użytkownika z powodu braku aktywności
Pracuję nad aplikacją RoR z Devise. Chcę pozwolić klientom wysłać żądanie do serwera, aby sprawdzić, ile czasu pozostało do automatycznego wylogowania użytkownika z powodu braku aktywności (przy użyciuTimeoutable
moduł). Nie chcę, aby to żądanie powodowało, że Devise resetował odliczanie do czasu wylogowania użytkownika. Jak mogę to skonfigurować?
Oto kod, który mam teraz:
class SessionTimeoutController < ApplicationController
before_filter :authenticate_user!
# Calculates the number of seconds until the user is
# automatically logged out due to inactivity. Unlike most
# requests, it should not reset the timeout countdown itself.
def check_time_until_logout
@time_left = current_user.timeout_in
end
# Determines whether the user has been logged out due to
# inactivity or not. Unlike most requests, it should not reset the
# timeout countdown itself.
def has_user_timed_out
@has_timed_out = current_user.timedout? (Time.now)
end
# Resets the clock used to determine whether to log the user out
# due to inactivity.
def reset_user_clock
# Receiving an arbitrary request from a client automatically
# resets the Devise Timeoutable timer.
head :ok
end
end
SessionTimeoutController#reset_user_clock
działa, ponieważ za każdym razem, gdy RoR otrzymuje żądanie od uwierzytelnionego użytkownika,Timeoutable#timeout_in
jest resetowany do wszystkiego, co skonfigurowałemDevise#timeout_in
. Jak mogę zapobiec ponownemu uruchomieniucheck_time_until_logout
ihas_user_timed_out
?