En Devise, si je change le mot de passe utilisateur et après qu’il est mis à jour dans la BD, le site immédiatement se déconnecte l’utilisateur. Je ne veux pas ce comportement - comment dois-je faire cela. Aider, s'il vous plaît.
Réponses
Trop de publicités?J’ai eu le même problème et le code suivant semble fonctionner pour moi.
Supposent que le contrôleur de mots de passe pour un itinéraire de singleton. En outre, supposons que le modèle authentifié est un compte. Avec cela, vous avez ce qui suit :
L’ingrédient principal est l’appel de méthode sign_in qui cherche à re-signer-dans le compte, mais ignore les rappels préfet stocke le compte dans la session.
L'exemple ci-dessus n'a pas fonctionné pour moi, en utilisant plusieurs champs d'application dans Imaginer.
J'ai dû ajouter de la portée/nom de la ressource dans le sign_in chemin pour que cela fonctionne, et pour éviter le chaos, j'ai aussi eu à signer l'ancien utilisateur ou de l'autre de toutes sortes de confusion abonde.
Les modifications que j'avais à faire serait de ressembler à quelque chose comme ceci en utilisant l'exemple ci-dessus.
def update
if current_account.update_with_password(params[:account])
sign_out(current_account)
sign_in(:account, current_account, :bypass => true)
flash[:notice] = 'Password updated.'
redirect_to account_path
else
render :action => :show
end
end
Edit: je pense que j'ai dû forcer la déconnexion de l'utilisateur parce que quelque part j'ai changé de Concevoir du code afin de ne pas avoir les utilisateurs de signe au cours de certaines actions. En recul; pas une bonne idée! Cette approche est beaucoup mieux! Étant qu'il est plus sûr de faire vos propres Contrôleurs rapport primordial de Concevoir du code, sauf si c'est absolument inévitable.
Utiliser le module enregistrable, qui vous donnera les deux signe vers le haut et modifier les fonctionnalités de l’utilisateur
https://github.com/plataformatec/devise/wiki/How-to :-Allow-users-to-edit-their-password