Yii, la meilleure façon de mettre “utilisateur de changer de mot de passe”
Je suis en utilisant Yii pour une application, je suis en train d'écrire un utilisateur très simple de gestion, telles que l'enregistrement, suppression et mise à jour des utilisateurs... Pour la mise à jour de l'utilisateur existant j'ai besoin de vérifier le mot de passe ancien premier avant de changer pour le nouveau inséré le mot de passe. Donc, voici les champs que j'ai dans la forme:
username:----
old_password:---
new_password:---
et ma table utilisateur ressemble à ceci:
id, username, password
Comment puis-je valider les old_password avant de la mettre à jour avec la new_password? Je sais que l'habituel code php, mais je veux savoir s'il y a des Yii trucs qui le fait automatiquement...
Merci d'avance
Vous devez utiliser un cadre d'authentification chaque fois que possible, parce que, vraiment, c'est complexe. Par exemple, prendre un coup d'oeil à github.com/delight-im/PHP-Auth qui est à la fois un cadre indépendant et de base de données agnostique.
OriginalL'auteur Mahsa Teimourikia | 2012-11-05
Vous devez vous connecter pour publier un commentaire.
Simple de créer un
action
qui a de la logique pour la mise à jour de passage.Faire de cible pour
form
à nouveauaction
dans ce casactionChangePass
etvalidate
là la façon dont vous le souhaitez .Un exemple grossier peut être mis comme ce
Assurez-vous également que vous avez $old_password dans votre utilisateur
User
Model
. Aussi, vous pouvez faire des validations dans les règles de modèle pour faire de nouveau le mot de passe requisil peut y avoir différentes façons trop, mais je ne l'aime cette
Également créer votre validation personnalisée
scenario
changePassword
Pas vraiment... Yiish serait de créer un nouveau Formulaire et de mettre de la logique dans les il y
merci
ce n'est pas sur vue que les formulaires sont en vue. L'Action est simple, vous pouvez créer un nouveau formulaire et rediriger vers l'action à la fin de la journée, son action qui doit faire le travail
je préfère créer un nouveau modèle de formulaire, je ne voulais pas salir mon modèle avec l'unreal propriété de champ.
OriginalL'auteur Afnan Bashir
Vous ne devriez pas polluer votre modèle d'ordures. S'il vous plaît, ayez toujours à l'esprit ces MVC principes:
Toujours créer un code réutilisable, de rendre votre code "à SEC" (Don't repeat yourself)
En passant, quel est le but de le champ nom d'utilisateur? Depuis le formulaire disponible à l'utilisateur identifié seulement, le nom d'utilisateur peut être consulté déjà avec Yii::app()->utilisateur.
exemple d'action de contrôleur:
exemple de code de modèle:
Le modèle doit être assez facile de créer. Ce code, avec quelques modifications mineures, est prête à être copiée & collé à un autre Yii projet.
J'ai mis à jour le post avec l'exemple de code de modèle. Vous devez suivre officiel Yii tutoriel sur la façon de gérer les formulaires dans les vues.
OriginalL'auteur emix
Ici est ce que j'aime personnellement de le faire. C'est d'un compliqué que la version de ce.
Ajouter deux champs qui vous aidera à traiter le mot de passe. Remarque: ces deux champs n'existe pas dans la base de données et ne sont pas présents dans Gii code généré. Quelque chose comme
Dans la forme, ne pas associer le mot de passe de domaine dans la base de données avec n'importe quelle entrée. Les deux champ dans la base de données doit être associé à ces deux champs. La version courte de la forme devient:
Maintenant, comment puis-je savoir que l'utilisateur a changé le mot de passe? J'ai simplement vérifier dans beforeSave() si les deux champs sont vides et de les comparer, puis de changer le mot de passe. Si elles sont vides alors je viens de sauter le tout complètement. Si simple version de beforeSave est:
Maintenant en fonction de votre question, une chose est manquante. Vérification de l'ancien mot de passe! Vous pouvez ajouter de nouveaux champs de Modèle appelé ce mot de passe et sa forme de contrôle d'entrée. Puis dans beforesave méthode (comme indiqué en commentaire), vous pouvez comparer l'entrée réelle du champ de mot de passe de la base de données et si elles correspondent, puis faire changer de mot de passe.
Vous pouvez ajouter des règles de validation, avec des scénarios, mais je trouve qu'il est compliqué d'une certaine manière et avec peu de temps à portée de main, je suis allé avec cette méthode.
OriginalL'auteur Stefano Mtangoo