208893
Messages postés55Date d'inscriptionmercredi 14 avril 2010StatutMembreDernière intervention21 décembre 2010
-
Modifié le 14 janv. 2021 à 20:06
ouatt121
Messages postés12Date d'inscriptionlundi 19 janvier 2009StatutMembreDernière intervention11 septembre 2010
-
11 sept. 2010 à 16:06
bonjours j'ai un problème de l'exécution de login et mot de passe.
le problème est n'importe qui peut accéder à mon application l'application ne vérifier pas le login et le mot de passe et voila mon code
/////////////////////////////////////////////////////////////////
//LoginForm.java
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.rmi.UnknownHostException;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import javax.imageio.IIOException;
import javax.imageio.ImageIO;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.JToolBar;
import javax.swing.KeyStroke;
import javax.swing.border.Border;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class LoginForm extends JFrame {
// Variables declaration
private JLabel jLabel1;
private JLabel jLabel2,jLabel3;
private JTextField jTextField1;
private JComboBox l3=null;
private JPasswordField jPasswordField1;
private JButton jButton1;
private JPanel contentPane;
boolean loop = false;
// End of variables declaration
public LoginForm(){
super();
create();
this.setVisible(true);
}
private void create(){
jLabel1 = new JLabel();
jLabel2 = new JLabel();
jLabel3 = new JLabel();
jTextField1 = new JTextField();
jPasswordField1 = new JPasswordField();
l3=new JComboBox();
l3.addItem("Administrateur");
l3.addItem("Non administrateur");
jButton1 = new JButton();
contentPane = (JPanel)this.getContentPane();
jLabel1.setHorizontalAlignment(SwingConstants.LEFT);
//jLabel1.setForeground(new Color(0, 0, 255));
jLabel1.setText("Login :");
jLabel2.setHorizontalAlignment(SwingConstants.LEFT);
// jLabel2.setForeground(new Color(0, 0, 255));
jLabel2.setText("Mot de passe :");
jLabel3.setHorizontalAlignment(SwingConstants.LEFT);
// jLabel3.setForeground(new Color(0, 0, 255));
jLabel3.setText("Etat :");
jTextField1.setToolTipText("Entrer votre login");
jPasswordField1.setToolTipText("Entrer votre mot de passe");
l3.setToolTipText("login");
jButton1.setText("OK");
jButton1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
try {
jButton1_actionPerformed(e);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
//
// contentPane
//
contentPane.setLayout(null);
contentPane.setBorder(BorderFactory.createEtchedBorder());
// contentPane.setBackground(new Color(204, 204, 204));
addComponent(contentPane, jLabel1, 5,10,106,18);
addComponent(contentPane, jLabel2, 5,47,97,18);
addComponent(contentPane, jLabel3, 5,77,90,18);
addComponent(contentPane, jTextField1, 110,10,183,22);
addComponent(contentPane, jPasswordField1, 110,45,183,22);
addComponent(contentPane, l3, 110,75,183,22);
addComponent(contentPane, jButton1, 150,110,100,28);
//
// login
//
this.setTitle("Espace d'authentification");
this.setLocation(new Point(76, 182));
this.setSize(new Dimension(335, 201));
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
this.setResizable(false);
} //end of create()
/** Add Component Without a Layout Manager (Absolute Positioning) */
private void addComponent(Container container,Component c,int x,int y,int width,int height) {
c.setBounds(x,y,width,height);
container.add(c);
} //end of addComponent()
private void jButton1_actionPerformed(ActionEvent e) throws Exception {
String username = new String(jTextField1.getText());
String password = new String(jPasswordField1.getText());
String etat = new String(l3.getSelectedItem().toString());
if(username.equals("") || password.equals("")) { // If password and username is empty > Do this >>>
jButton1.setEnabled(false);
JLabel errorFields = new JLabel("<HTML>Vous devez entrer votre login et mot de passe.</HTML>");
JOptionPane.showMessageDialog(null,errorFields);
jTextField1.setText("");
jPasswordField1.setText("");
jButton1.setEnabled(true);
this.setVisible(true);
} //end of if
else if(username.equals("") || password.equals("")|| etat.equals("Non administrateur")){
UserDB udb=new UserDB();
boolean canLogin = UserDB.Connexion_utilisateur(username, password);
Ofenetre oFen = new Ofenetre();
oFen.setVisible(true);
this.setVisible(false);
JOptionPane.showMessageDialog(null, "Bienvenue, vous êtes connecté.", "Bienvenue", JOptionPane.WARNING_MESSAGE);
}
else if(username.equals("") || password.equals("")|| etat.equals("Administrateur")){
UserDB udb=new UserDB();
boolean canLogin = UserDB.Connexion_utilisateur(username, password);
ZFenetre zFen = new ZFenetre();
zFen.setVisible(true);
this.setVisible(false);
JOptionPane.showMessageDialog(null, "Bienvenue administrateur, vous êtes connecté.", "Bienvenue", JOptionPane.WARNING_MESSAGE);
do{
loop = false;
if(!canLogin) {
JOptionPane.showMessageDialog(null, "Le login et le mot de passe sont erronés, essayez de nouveau", "Warning !!!", JOptionPane.WARNING_MESSAGE);
jTextField1.setText("");
jPasswordField1.setText("");
loop = true;
break;
} //end of if
} //end of do
while (loop);
} //end of else
} //end of jButton1_actionPerformed()
public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
liste_ouvrier lf = new liste_ouvrier();
add_ouv add = new add_ouv();
Liste_formation form = new Liste_formation();
Liste_process proc = new Liste_process();
ajout_process ajoutt = new ajout_process();
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} //end of try
catch (Exception ex) {
} //end of catch
new LoginForm();
}; //end of main()
} //end of LoginForm
//////////////////////////////////////////////////////////////////
et merci d'avance
fadouahassen22
Messages postés15Date d'inscriptionjeudi 8 juillet 2010StatutMembreDernière intervention25 août 20101 2 août 2010 à 15:10
bonjour !
je fais une application qui dois prendre en considération un petit test de login et password avant d'y entrer, mais je n'ai pas trouvé comment vérifier le entered login & password avec tous ceux qui existent dans la database.
si vous m'aidez je serai reconnaissante.
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013129 2 août 2010 à 15:16
Salut,
Sans vraiment comprendre tout ton code, déjà je vois un problème :
Tu teste ceci : username.equals("") || password.equals("")
Et ensuite tu teste ceci dans le else :
username.equals("") || password.equals("")|| etat.equals("Non administrateur")
Mais il ne passera jamais dans le else vu que si le username ou le password est vide, il passera dans le premier cas, donc le deuxième test ne sera jamais évalué.
______________________________________
AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
fadouahassen22
Messages postés15Date d'inscriptionjeudi 8 juillet 2010StatutMembreDernière intervention25 août 20101 2 août 2010 à 15:34
salut!
le problème c'est qu'on me vérifie que le premier login et motdpasse qui existent dans la base de donnée , dès que je fais entrer un autre loin et motd passe autre que le 1er figurant ds la database ça m'affiche le msg d'erreur.
ce qui m'échappe c'est comment parcourir toute la base pourcomprer les info entrées avec les existantes
thx (^_^)
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013129 Modifié le 14 janv. 2021 à 20:09
Salut,
Ah ben voilà, c'est déjà plus précis comme question.
La façon pour vérifier cà, ce n'est pas de récupérer tout les logins/mot de passe de la base de données et de les tester par du code java, mais de faire une requête SQL qui te renvoie l'enregistrement correspondant au login/mot de passe saisit.
Par exemple, au lieu de faire :
"SELECT id FROM table"
faire :
"SELECT id FROM table WHERE username '" + username.replaceAll("'", "''") + "' AND password '" + password.replaceAll("'", "''") + "'"
Ainsi tu sauras tout de suite si cet utilisateur existe en base, et ce sera bien plus efficace que de parcourir tout tes enregistrements un à un en java !
______________________________________
AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
kanamesama
Messages postés7Date d'inscriptionvendredi 30 janvier 2009StatutMembreDernière intervention26 août 2010 Modifié le 14 janv. 2021 à 20:11
Bonjour,
Si je vous comprends bien, cette requête SQL devra être intégrée quelque part dans le code de l'interface "LOGIN"?? J'ai déjà un fichier "requetes.java" dans mon projet ou je mettais jusque là les requêtes SQL qui me remplissaient mes interfaces java à partir de ma base de données MySQL, devrais-je ajouter ma nouvelle requête SQL (d'authentification) à ce même fichier requête.java?
D'un autre côté, dans ma base de données, j'ai une table "utilisateurs" avec uniquement deux champs ( login et password) devrais-je mettre comme requête:
"SELECT * FROM utilisateurs WHERE login '" + jTextField1.getText().replaceAll("'", "''") + "' AND password '" + jPasswordField.getText().replaceAll("'", "''") + "'" ;
j'aimerai maintenant faire en sorte de ne plus m'authentifier en tant que "user/user" mais permettre plutôt à tous les utilisateurs enregistrés dans ma table "utilisateurs" de ma base de données Mysql de s'authenfier.
Je devrais donc insérer une requête sql quelque part n'est ce pas? Mais je sais pas comment y procéder?