54 votes

Définir la durée de la session avec Devise

Mes sessions avec devise expirent après 1 à 3 heures d'inactivité (je ne suis pas sûr exactement combien de temps). Comment puis-je ajuster cela?

J'ai examiné la documentation et je ne semble pas trouver de paramètre pour cela.

90voto

Brian Deterling Points 7778

Regardez dans config/initializers/devise.rb. Il y a beaucoup de paramètres de configuration incluant config.timeout_in. Le défaut dans ma version est de 30 minutes. Vous pouvez également le définir sur le modèle lui-même :

class User < ActiveRecord::Base
  devise :timeoutable, :timeout_in => 15.minutes

Vous pouvez maintenant également définir le timeout dynamiquement.

3 votes

Est-il sécuritaire de le régler à 2 semaines par exemple?

15voto

Ankush Points 151

Avec Rails4, la meilleure chose à suivre est:

Dans models/user.rb: Ajoutez :timeoutable à la liste déjà existante des modules devise.

class User < ActiveRecord::Base
  devise :timeoutable
end

Dans config/initializers/devise.rb: Définissez le paramètre de timeout.

Devise.setup do |config|
  config.timeout_in = 3 heures
end

13voto

rusllonrails Points 595

Global:

class User < ActiveRecord::Base
  devise (...), :timeoutable
end

Devise.setup do |config|
  config.timeout_in = 3 hours
end

Aussi, il est possible de définir dynamiquement l'option timeout_in

class User < ActiveRecord::Base
  devise (...), :timeoutable

  def timeout_in
    if self.admin? 
      1 an
    else
      2 jours
    end
  end

7 votes

Oui! Sauf peut-être que vous voudriez inverser les temps là-bas. Mieux vaut faire en sorte que les utilisateurs ayant plus de privilèges s'authentifient plus fréquemment...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X