0
votes

Comment déconnecter l'utilisateur connecté avec une stratégie de conception personnalisée

J'ai besoin de déconnecter un utilisateur qui a été connecté à My Rails App à l'aide de la stratégie d'authentification de congise personnalisée. Cette stratégie est utilisée en plus de la stratégie de base de données_authentifiable. Y a-t-il une logique que je dois ajouter à ma mise en œuvre personnalisée d'authentifier_user! Méthode dans la stratégie personnalisée? Dois-je aussi mettre en œuvre la méthode de détruire dans un contrôleur de sessions personnalisé?

Mes journaux de stratégie personnalisés dans l'utilisateur Fine (codé dur pour l'instant) mais je ne peux pas déconnecter l'utilisateur comme mesure de déconnexion appelle ma mise en œuvre personnalisée d'authentifier_user! à nouveau et ils sont encore connectés.


0 commentaires

3 Réponses :


0
votes

Vous pouvez utiliser le rappel skip_before_action dans ce cas, comme dans votre contrôleur, mettre le code ci-dessous avant toutes les actions

 skip_before_action :authenticate_user, only: [:your_logout_action]

Cela ignorera l'authentification pour votre méthode et l'utilisateur ne se connectera plus.


0 commentaires

0
votes

Pour autant que j'ai bien compris, est-ce que, laissez toute action pour déconnecter le utilisateur_actuel dans la devise. Si tel est le cas, il peut être implémenté comme ceci

​​Disons,

class SomeController < ApplicationController
  before_action :authenticate_user!

  def some_action
    if some_logic == true #implement some_logic to return boolean(true/false)
      sign_out resource
      flash[:notice] = ''
      flash[:error] = 'You are logged out!'
      root_path
    end
  end
end


1 commentaires

Je ne pense pas que tout cela devrait être requis, simplement parce que j'ai mis en œuvre une stratégie personnalisée. Si l'utilisateur est correctement déconnecté (ce qui est vraiment ma question), il doit être amené à se connecter à la page s'il est redirigé vers la page (page d'accueil dans ce cas) qui nécessite une authentification. Ai-je même besoin d'un contrôleur de sessions personnalisé dans ce cas?



0
votes

J'ai pu résoudre mon problème. Le problème était que j'avais une méthode codée en dur valid? pour retourner true tout le temps. Lorsque j'ai ajouté la logique pour renvoyer true uniquement si les paramètres d'e-mail et de mot de passe sont présents, l'authentification personnalisée fonctionne comme prévu.


0 commentaires