- 1
[Opened] la méthode jAuth::verifyPassword() ne fonctionne pas
Posted by xanaxilovsky on 04/26/2011 21:32
Bonjour,
Je tente de créer un formulaire de connexion mais j'ai un problème au niveau de cette méthode: jAuth::verifyPassword($login, $password)
. Elle renvoie toujours false alors que je fournie bel et bien les bonnes informations. J'ai même essayez d'écrire directement le login et le mot de passe comme ceci, jAuth::verifyPassword('lutilisateur', 'sonmotdepasse')
, mais il renvoie toujours et toujours false. Serait ce un bug, ou il y a une configuration que j'ai du oublier? Pour la fonction de cryptage, j'utilise "1:sha1WithSalt".
Merci d'avance pour les réponses :)
[Opened] la méthode jAuth::verifyPassword() ne fonctionne pas
Posted by laurentj on 04/27/2011 10:32
Salut,
J'utilise jAuth dans de nombreux projets, et ça a toujours bien fonctionné (en même temps, j'ai pas trop utilisé sha1 avec un salt). Tu es sûr que ce qui est stocké en base est bien en sha1 avec ton salt ? (et le même salt indiqué dans la config)
Tu a essayé en sha1 normal ? C'est pareil pour tout login ?
PS: tu as bien renseigné password_salt dans la conf du plugin ?
[Opened] la méthode jAuth::verifyPassword() ne fonctionne pas
Posted by xanaxilovsky on 04/27/2011 18:59
Oui, j'ai bien fait les config. Je vais essayer avel le sha1 normal si ca fonctionne ...
[Opened] la méthode jAuth::verifyPassword() ne fonctionne pas
Posted by xanaxilovsky on 04/27/2011 20:01
Euh ... Ca marche toujours pas! :( Juste pour être sûr, je vais te montrer comment j'ai fais
J'ai copié le fichier "auth.coord.ini.php" dans le répertoire "/monsite/var/config/index/" dont voici les config
driver = Db auth_required = off on_error = 2 on_error_action = "fronfoffice~default:index" persistant_enable=off dao = "frontoffice~camuser" ; profile to use for jDb profile = "cameleonmicro" password_crypt_function = sha1
Et voici camuser.dao.xml
... <property name="CAMUSER_LOGIN" fieldname="CAMUSER_LOGIN" datatype="varchar" required="true" maxlength="15"/> <property name="CAMUSER_MDP" fieldname="CAMUSER_MDP" datatype="varchar" required="true" maxlength="15"/> <property name="PERS_ID" fieldname="PERS_ID" datatype="int" required="true"/> ... <method name="getByLoginPassword" type="selectfirst"> <code> <parameter name="login" /> <parameter name="password" /> <conditions> <eq property="CAMUSER_LOGIN" expr="$login" /> <eq property="CAMUSER_MDP" expr="$password" /> </conditions></method> <method name="getByLogin" type="selectfirst">
<parameter name="login" /> <conditions> <eq property="CAMUSER_LOGIN" expr="$login" /> </conditions></method> <method name="updatePassword" type="update">
<parameter name="login" /> <parameter name="password" /> <values> <value property="CAMUSER_MDP" expr="$password"/> </values> <conditions> <eq property="CAMUSER_LOGIN" expr="$login" /> </conditions></method> <method name="deleteByLogin" type="delete">
<parameter name="login" /> <conditions> <eq property="CAMUSER_LOGIN" expr="$login" /> </conditions></method> <method name="findByLogin" type="select">
<parameter name="pattern" /> <conditions> <like property="CAMUSER_LOGIN" expr="$pattern" /> </conditions> <order> <orderitem property="CAMUSER_LOGIN" way="asc" /> </order></method> <method name="findAll" type="select">
<order> <orderitem property="CAMUSER_LOGIN" way="asc" /> </order></method> </code>
Et c'est comme ça que je vérifie la connexion :
$data = $form->getAllData(); <code>
$login = $data'CAMUSER_LOGIN'; $password = $data'CAMUSER_MDP';
//$connect = jAuth::login($login, $password, false); $connect = jAuth::login('mario', 'mario', false); if($connect)
$message = 'connexion reussie';
else
$message = 'connexion echoue';</code>
Cette dernière me retourne toujours false, et je vois pas où est le problème. Y aurait il un truc que j'ai pas compris dans l'utilisation de jAuth?
Edit:
Et voici l'insertion de l'utilisateur
$persLastId = personne::findLastId(); $newUser = jAuth::createUserObject($data[['CAMUSER_LOGIN']],$data[['CAMUSER_MDP']]); $newUser->PERS_ID = $persLastId; $newUser->CAMUSER_LOGIN = $newUser->login; $newUser->CAMUSER_MDP = $newUser->password; try{ <code> $user = jAuth::saveNewUser($newUser);
}catch(Exception $e){
echo '<pre>'.print_r($e).'</pre>';
}
</code>[Opened] la méthode jAuth::verifyPassword() ne fonctionne pas
Posted by laurentj on 04/28/2011 10:44
Première chose : ton dao n'a pas la même interface que le dao originel. Tu risques donc des disfonctionnement. Tu dois avoir les propriétés login et password. Je ne vois pas d'ailleurs pourquoi tu tiens vraiment à avoir des propriétés avec des noms différents. Les propriétés login et password pourraient très bien être mappés sur les champs CAMUSER_LOGIN et CAMUSER_MDP. Et ça t'éviterai du code.
<code xml> <property name="login" fieldname="CAMUSER_LOGIN" datatype="varchar" required="true" maxlength="15"/> <property name="password" fieldname="CAMUSER_MDP" datatype="varchar" required="true" maxlength="15"/> </code>Deuxième chose : tu m'a toujours pas répondu. As tu vérifier que la valeur stockée en base, est bien la valeur du password en sha1 ? Et si entre le passage de sha1WithSalt à sha1, tu n'as pas mis à jour la valeur de ces champs, oui, c'est normal que ça ne fonctionne pas.
Le champs en base a-t-il la bonne longueur de stockage ? D'ailleurs, si c'est vraiment 15, c'est beaucoup trop juste pour stocker un sha1. Si dans le dao d'origine, c'est 50, c'est pas pour rien ;-)
Et même 15 pour le login, c'est juste.
[Opened] la méthode jAuth::verifyPassword() ne fonctionne pas
Posted by xanaxilovsky on 04/28/2011 14:50
Pour le passage de sha1WithSalt à sha1, j'ai bien mis à jour la base. Pour la vérification de la valeur du password, euh ... c'est un peu honteux mais ... j'ai oublié :p .
Je suis presque sûr que c'est à cause du maxlength qui est un peu trop court. Je vais testé quand je serai chez moi. J'espère que ça marchera cette fois-ci :)
Et pour le mapping, merci de me l'avoir rappelé, je n'y ai pas du tout pensé ;) . Je re-posterai ce soir si ca marche (ou pas :p ).
[Opened] la méthode jAuth::verifyPassword() ne fonctionne pas
Posted by xanaxilovsky on 04/28/2011 19:53
Ca a marché! C'était le maxlength :D ! Merci à toi Dieu du JELIX :D
- 1