|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||||
|
Invité de passage
![]() |
Bonjour à tous.
J'ai crée une fonction qui va vérifier le contenu d'un mot de passe (fonction proche de celle prédéfinie par Oracle), cette dernière compile bien avec l'utilisateur SYS. J'ai fait les test en la mettant en mode procédure, elle fonctionne bien. Je crée un profil avec l'option "password_verify_function" et je lui passe le nom de ma fonction ce qui me donne : Code :
Mon souci arrive quand j'assigne ce profil à un utilisateur quelconque, en effet quoique je fasse j'obtiens : Code :
Au cas où voici le code de ma fonction (à noter que j'ai besoin d'une table DICTIONNAIRE qui contient les mots interdits du mot de passe) : Code :
Voici ensuite le code de mon profil : Code :
Annabelle |
||||||||
|
|
00
|
|
|
#2 |
|
Membre du Club
![]() Inscription : décembre 2010 Messages : 190 ![]() |
Bonjour,
D'abord commence par mettre en commentaire tout le code de ta fonction et retourne directement pour voir si ta fonction fonctionne bien. |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() |
Alors dans ma fonction j'ai remplacé tout le code dans le BEGIN par "Return TRUE", la fonction se compile bien et je peux bien l'utiliser dans mon ALTER USER. Mais à quoi cela m'avance ??
|
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() Inscription : décembre 2010 Messages : 190 ![]() |
et bien cela nous indique que le problème vient surement de la fonction.
Il suffit alors de faire une petite trace, ou bien d'enlever les commentaires petit à petit, et tu trouveras la requête qui pose problème... |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() |
Ok mais ce que je ne comprends pas c'est que quand j'ai testé la fonction en mode procédure (sans valeur de retour et avec les paramètres en dur) ça a fonctionné !
|
|
|
00
|
|
|
#6 |
|
Membre du Club
![]() Inscription : décembre 2010 Messages : 190 ![]() |
Et bien c'est normal.
On vient de faire le test avec une valeur en dur ( True ) et ça a marché avec la fonction. Moi je dirais que ça vient de l'une des exceptions que tu as. car dans ces dernières il n'y a pas de . Tu devrais ajouter un dans les exceptions et re-tester. |
|
|
00
|
|
|
#7 | ||
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 311 ![]() |
Citation:
Citation:
|
||
|
|
10
|
|
|
#8 | ||
|
Invité de passage
![]() |
On ne peut pas mettre "IN VARCHAR(30)" dans les paramètres d'entrée d'une fonction. Voici le code prédéfini d'Oracle pour une fonction de vérification également :
Code :
dans le WHEN de chaque exception et ça ne fonctionne toujours pas, j'ai l'erreur : Code :
Echec de la vérification du mot de passe indiqué |
||
|
|
00
|
|
|
#9 | ||
|
Invité de passage
![]() |
Bon, voici mon code avec les modifications faites :
Code :
|
||
|
|
00
|
|
|
#10 | ||
|
Membre confirmé
![]() Grégoire MARTINIngénieur développement logiciels Inscription : janvier 2011 Messages : 128 ![]() |
Bonjour,
Ceci marche chez moi Code :
|
||
|
|
00
|
|
|
#11 |
|
Invité de passage
![]() |
Nous avons essayé tel quel en modifiant le code du curseur pour que ce dernier parcoure bien notre table "Dictionnaire", et ça ne fonctionne toujours pas.
Quand j'attribue la fonction au profil, et que je fais un alter user en modifiant le mot de passe, j'ai soit un message d'erreur qui me dit que la vérification n'a pas pu être faite et qu'un nouveau mot de passe doit être rentré uniquement quand le mot de passe contient ou est égal au nom d'utilisateur Dans les autres cas j'obtiens uniquement un succès de l'élément Alter User. (c'est un peu confus tout ça !) Je suis en train de réessayer bloc par bloc de traitement |
|
|
00
|
|
|
#12 |
|
Invité de passage
![]() |
Alors j'ai essayé rien qu'en mettant le bloc de vérification de la taille du mot de passe et ça ne fonctionne pas.
J'ai simplement essayé en voulant afficher un message à l'écran et toujours rien. Il semblerait que le problème vienne de l'appel de la fonction, et non de la fonction en elle même |
|
|
00
|
|
|
#13 | ||
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 311 ![]() |
Sample Password Verification Routine
Code :
|
||
|
|
00
|
|
|
#14 | ||
|
Invité de passage
![]() |
Bon. J'ai trouvé le problème qui n'en est pas un vraiment !!!
En fait tout mon code est bon. Le problème vient de SQL Developer ! J'ai tout fait avec SQL Plus, et tout a fonctionné ! La fonction est correctement appelé et elle m'envoie bien bouler quand le mot de passe n'est pas bon. Seule précision, elle ne me retourne pas le texte des exceptions que j'ai défini. Une idée pour cela ?? PS : résultat, 3/4 d'une journée de travail bousillée pour ça... Code :
|
||
|
|
00
|
|
|
#15 |
|
Membre du Club
![]() Inscription : décembre 2010 Messages : 190 ![]() |
A la bonne heure.
|
|
|
00
|
|
|
#16 | ||
|
Invité de passage
![]() |
Bon c'est bon tout fonctionne, pour afficher le code de mes exceptions il fallait simplement que je les change par un "raise_application_error", je me permet donc de poster mon code final au cas où :
Code :
|
||
|
|
00
|
|
|
#17 |
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 311 ![]() |
Comme je l’ai déjà dit je n’aime pas comment c’était codé dans la doc d’Oracle .... De plus, que pensez-vous de l’instruction return false précédée par raise_application_error, sera-t-elle exécutée ou pas ?
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com