Dieser Artikel ist eine Fortsetzung von Implementing Account BAN. Wenn Sie möchten, klicken Sie bitte hier.
Wenn der Benutzer für einen bestimmten Zeitraum nicht zugreift Dieses Mal werde ich einen Mechanismus implementieren, um den Anmeldestatus automatisch abzubrechen. Zuerst von session_controller. Das Herz dieser Zeit ist session [: last_access_time] = Zeit.aktueller Teil. Speichern Sie die aktuelle Zeit in der Sitzung, wenn Sie sich anmelden. Der Rest ist die normale Anmeldeverarbeitung.
sessions_controller.rb
class User::SessionsController < User::Base
#Kürzung...
if User::Authenticator.new(user_member).authenticate(@form.password)
if user_member.suspended?
flash.now.alert = "Konto ist gesperrt"
render action: "new"
else
session[:user_member_id] = user_member.id
#Speichern Sie die aktuelle Zeit in der Sitzung beim Anmelden.
session[:last_access_time] = Time.current
flash.notice = "Sie sind jetzt angemeldet"
redirect_to :user_root
end
else
flash.now.alert = "Falsche E-Mail-Adresse oder falsches Passwort"
render action: "new"
end
end
end
Und hier ist die Implementierung des Sitzungszeitlimits. Wenn dieses Mal 60 Minuten oder länger keine Anmeldung erfolgt, läuft die Sitzung ab.
controllers/user/base.rb
#Stellen Sie die Zeitüberschreitung auf 60 Minuten ein
TIMEOUT = 60.minutes
private def check_timeout
if current_user
#Sitzung, wenn der letzte Zugriff weniger als 60 Minuten betrug[:last_access_time]Zur aktuellen Zeit
if session[:last_access_time] >= TIMEOUT.ago
session[:last_access_time] = Time.current
#Wenn der letzte Zugriff nicht innerhalb von 60 liegt, löschen Sie die Sitzung als Sitzungszeitlimit und löschen Sie sie.
#Zum oberen Bildschirm umleiten.
else
session.delete(user_id)
flash.alert = "Die Sitzung ist abgelaufen."
redirect_to :staff_login
end
end
end
Ich konnte es so umsetzen. Es war einfacher als ich erwartet hatte. Speichern Sie die letzte Zugriffszeit in der Sitzung. Ist das der wichtige Teil? Das ist alles für heute.
71 Tage, um ein vollwertiger Ingenieur zu werden
Recommended Posts