Bonjour a tous
Svp comment utiliser la fonction PWDCOMPARE dans un code Delphi pour vérifier le mot de passe tapé par l'utilisateur ???
Merci beaucoup de m'aider
Bonjour a tous
Svp comment utiliser la fonction PWDCOMPARE dans un code Delphi pour vérifier le mot de passe tapé par l'utilisateur ???
Merci beaucoup de m'aider
Suffit de faire un SQL comme évoque dans la documentation mais sur votre table de Login.
Au préalable, il faut que les mots de passe dans votre table de Login de la base de donnée soit encryptées via PWDENCRYPT.
Essayez quelque chose de basique comme ceci :
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part SELECT PWDCOMPARE(:pMotDePasse, USERS.Login) FROM USERS WHERE Login = :pUtilisateur
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !![]()
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !
L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
Pour compléter un peu la réponse de ShaiLeTroll : PWDCOMPARE est une fonction SQL de SQLSERVER, dans Delphi cette fonction doit être utilisée via un objet descendant de TDataset, donc une classe de type TFDQuery, TAdoQuery ou autre... Qui sera lié à la connexion vers le serveur MSSQL
Ah oui, je n'avais pas pensé à ce prérequis, je me suis dit que si l'on s'intéresse à la sécurité des mots de passe, on avait déjà dépassé de loin la phase du choix de la bibliothèque d'accès, de la connexion et de l'utilisation de requête
Et si l'on n'a pas encore décidé quel descendant choisir, on peut aussi le faire à la main avec les objets ADO en OLE
J'ai fait cela dans le cadre d'une comparaison de performance entre TADOQuery et la couche que ce dernier utilise (j'ai trouvé une lenteur sur le Fetch en adUseClient + adOpenKeyset sur le TADOQuery)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 FCnx: Variant; FCmd: Variant; FRec: Variant; FPrm: Variant; ... FFields: array of Variant; public procedure OpenConnection(const APassword: string); ... end;Le code ci-dessus est un agrégé, c'est à titre d'exemple que ce n'est pas si compliqué d'utiliser ADO en OLE sans le TADOQuery et encore c'est Late Binding un peu plus chiant que le Early Binding.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 //------------------------------------------------------------------------------ procedure ....OpenConnection(const APassword: string); begin FCnx := System.Win.ComObj.CreateOleObject('ADODB.Connection'); FCnx.Open(GetConnectionString() + ';Password='+APassword); FCmd := System.Win.ComObj.CreateOleObject('ADODB.Command'); FCmd.ActiveConnection := FCnx; FCmd.CommandType := Winapi.ADOInt.adCmdText; FRec := System.Win.ComObj.CreateOleObject('ADODB.Recordset'); FRec.CursorLocation := Winapi.ADOInt.adUseClient; FRec.CursorType := adOpenKeyset; FRec.LockType := adLockOptimistic; end;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 Query.FCmd.CommandText := 'SELECT ... FROM ... WHERE ... = ?'; Query.FRec.CursorLocation := Winapi.ADOInt.adUseClient; Query.FRec.CursorType := Winapi.ADOInt.adOpenKeyset; Query.FPrm := Query.FCmd.CreateParameter; Query.FPrm.Direction := adParamInput; Query.FPrm.Type := adVarChar; Query.FPrm.Size := Length(VarToStr(Value)); Query.FPrm.Value := Value; Query.FCmd.Parameters.Append(Query.FPrm); Query.FRec.Open(Query.FCmd); while not Query.FRec.EOF do begin for I := 0 to Query.FRec.Fields.Count - 1 do ShowMessage(Query.FFields[I].Value); Query.FRec.MoveNext; end; Query.FRec.Close;
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !![]()
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !
L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
Partager