Cet article est une suite de Mise en œuvre du BAN de compte. Si vous le souhaitez, cliquez ici.
Si l'utilisateur n'y accède pas pendant un certain temps Cette fois, je vais mettre en œuvre un mécanisme pour annuler automatiquement l'état de connexion. D'abord depuis session_controller. Le cœur de ce temps est session [: last_access_time] = Time.current part. Enregistrez l'heure actuelle dans la session lorsque vous vous connectez. Le reste est un traitement de connexion normal.
sessions_controller.rb
class User::SessionsController < User::Base
#réduction...
if User::Authenticator.new(user_member).authenticate(@form.password)
if user_member.suspended?
flash.now.alert = "Le compte est suspendu"
render action: "new"
else
session[:user_member_id] = user_member.id
#Enregistrez l'heure actuelle dans la session lors de la connexion.
session[:last_access_time] = Time.current
flash.notice = "Vous êtes maintenant connecté"
redirect_to :user_root
end
else
flash.now.alert = "Adresse e-mail ou mot de passe incorrect"
render action: "new"
end
end
end
Et voici l'implémentation du timeout de session. Cette fois, s'il n'y a pas de connexion pendant 60 minutes ou plus, la session expirera.
controllers/user/base.rb
#Définir le délai d'expiration à 60 minutes
TIMEOUT = 60.minutes
private def check_timeout
if current_user
#Session si le dernier accès a duré moins de 60 minutes[:last_access_time]À l'heure actuelle
if session[:last_access_time] >= TIMEOUT.ago
session[:last_access_time] = Time.current
#Si le dernier accès n'est pas dans les 60 ans, supprimez la session en tant que délai d'expiration de session et supprimez-la.
#Redirigez vers l'écran supérieur.
else
session.delete(user_id)
flash.alert = "La session a expiré."
redirect_to :staff_login
end
end
end
J'ai pu l'implémenter comme ça. C'était plus facile que prévu. Enregistrez la dernière heure d'accès dans la session. Est-ce là la partie importante? C'est tout pour aujourd'hui.
71 jours pour devenir ingénieur à part entière
Recommended Posts