cs_emmanuel9
Messages postés903Date d'inscriptionmercredi 23 février 2005StatutMembreDernière intervention16 juin 2010
-
15 févr. 2006 à 18:09
cs_emmanuel9
Messages postés903Date d'inscriptionmercredi 23 février 2005StatutMembreDernière intervention16 juin 2010
-
17 févr. 2006 à 15:09
Bonjour à tous,
J'ai
une table Personne dans mon sgbd Sql Server avec deux colonnne "Login"
et "Mot de passe", et j'ai un logiciel dans lequel on demande le login
et le mot de passe de la personne qui veut se connecter et donc si il
rentre :
Login : "jean"
Mot de passe : "jacques"
Je verifi dans la table Personne si le couple "Jean" et "Jacques" sont présent et si oui je lance le logiciel.
Ce
que je voudrais en faite c'est d'empecher à un utilisateur de se loguer
sur un compte si une autre utilisateur est loguer sur ce même compte et
de mettre un message genre : "Vous ne pouvez pas vous loguer sur ce
compte car un utilisateur s'y trouve déja".
Comment feriez vous ? Y'a t'il un moyen de faire ca avec sql server avec les contraintes d'integrité ?
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201136 16 févr. 2006 à 08:14
Salut,
Soit tu ajoutes un champ supplémentaire dans la case personne.
Exemple le champ logon de type boolean(bit).
Quand la personne ce log, le bit change.
Quand l'autre personne ce connecte, lors de la recherche de la personne dans la table il suffit de rajouter la valeut de ce champ.
lors que la personne ce délogue alors le bit change.
Un problème est que si la personne kill l'application, brusquement le bit peux resté bloqué. Donc il faut un outil d'admin pour remettre les bit a false.
Un autre point, évite de stocker en dur les mot de passe, il faut utiliser les
api de crypto (exemple un md5), et regarder si
md5(motdepassesaisi) = md5 stockée.
La méthode empeche d'utiliser une table supplémentaire avec une gestion des contrainte d'intégrité.
Et la gestion de l'unicité levant une exception, est aun niveau perf mauvais.
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201136 16 févr. 2006 à 19:49
Salut,
Je ne pense pas, ce n'est pas le but de sqlserver.
Les différents langage y arrive apres il faut chercher sur codes sources les classes et méthodes qui fonctionne bien.
Ton système a l'air correct, mais il est peut etre moins performant que ce que je proposait car des bit sont plus rapides que des chaines de caracteres.
Mais la fonctionnalité marchera mieux.
cs_emmanuel9
Messages postés903Date d'inscriptionmercredi 23 février 2005StatutMembreDernière intervention16 juin 20102 16 févr. 2006 à 10:06
Moi je pensais faire dans ma table Personne un champ
chaine_identifiante dans laquelle je concatene le nom du pc + le nom de
la session, exemple " monpc/nomdemasession" et que j'insere dans la
table Personne au moment ou il se connecte sur un compte.Et ce champs
je le remet à blanc une fois que la personne se deconnecte du logiciel.
La règle est donc : une personne peut se loguer sur un compte sur le
champs "chaine_identifiante" correspondant correspond à sa propre
chaine de connexion ou bien si "chaine_identifiante" est vide.
Ainsi même si l'appli est quitté à la barbare, la personne pourra tjs se connecter dessus.
exemple :
jean se connecte :
login | mp | chaine_identifiante
jean paul pcdejean/sessionjean
jean se deconnecte
login | mp | chaine_identifiante
jean paul
qu'en penses tu ?
En faite ca rejoint ton idée, en effet il peut y avoir un blocage si l'appli est quitté de manière non conventionelle. C'est vrai que pour les mot de passes je les ecris sans les cacher dans la base est ce que sql server contient qq chose qui me permet de les crypters automatiquement ?
cs_emmanuel9
Messages postés903Date d'inscriptionmercredi 23 février 2005StatutMembreDernière intervention16 juin 20102 17 févr. 2006 à 09:55
Ben je pensais faire avec un boolean au debut, mais mon système permet à celui qui a quitté l'appli de manière non conventionelle de pouvoir se reconnecter. Maintenant question rapidité les bits sont sans doute plus rapide. Après c'est une question de choix entre les deux méthodes.
Vous n’avez pas trouvé la réponse que vous recherchez ?