Système Authentification en Java à l'aide d'un fichier texte
Knowz
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour,
Je débute en Java et j'aimerais faire un système d'authentification en java (avec mot de passe, nom d'utilisateur) mais avec un fichier texte ou un tableur. J'ai déjà fait cela avec une base de donnée mais je veux changer. J'ai appris comment créer un fichier, le lire et écrire mais je ne sais pas comment organiser ça pour que java lise bien l'information qu'il faut dans le fichier et distingue l'authenticité du nom d'utilisateur et du mot de passe.
Merci d'avance !
Configuration: Windows / Firefox 101.0
Je débute en Java et j'aimerais faire un système d'authentification en java (avec mot de passe, nom d'utilisateur) mais avec un fichier texte ou un tableur. J'ai déjà fait cela avec une base de donnée mais je veux changer. J'ai appris comment créer un fichier, le lire et écrire mais je ne sais pas comment organiser ça pour que java lise bien l'information qu'il faut dans le fichier et distingue l'authenticité du nom d'utilisateur et du mot de passe.
Merci d'avance !
Configuration: Windows / Firefox 101.0
A voir également:
- Système Authentification en Java à l'aide d'un fichier texte
- Fichier bin - Guide
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Comment réduire la taille d'un fichier - Guide
- Restauration systeme windows 10 - Guide
1 réponse
Bonjour,
Le plus simple c'est d'utiliser un fichier .properties c'est un format standard en Java.
https://fr.m.wikipedia.org/wiki/.properties
Exemple :
credentials.properties
Credentials.java
Le plus simple c'est d'utiliser un fichier .properties c'est un format standard en Java.
https://fr.m.wikipedia.org/wiki/.properties
Exemple :
credentials.properties
user=Hello password=World
Credentials.java
Properties credentials = new Properties();
credentials.load(new FileInputStream("credentials.properties"));
String user = credentials.getProperty("user");
String password = credentials.getProperty("password");
Un fichier de properties c'est comme une Map<String,String> donc tu mets ce que tu veux en clé et valeurs, par exemple tu peux mettre les user en clé et les password en valeur, plutôt que d'utiliser toujours la même clé pour tous les utilisateurs.
"je n'arrive également pas à vérifier si ce que l'user met dans la textBox est juste"
Il faut juste récupérer la valeur de ta TextBox et la comparer avec la valeur enregistrée dans les properties.
Exemple :
import java.io.*; import java.util.Properties; public class UserCredentials { private final File credentialsFile; private final Properties properties; public UserCredentials(File credentialsFile) { this.credentialsFile = credentialsFile; properties = new Properties(); if (credentialsFile.exists()) { readCredentialsFile(); } else { writeCredentialsFile(); } } private void readCredentialsFile(){ try { properties.load(new FileInputStream(credentialsFile)); } catch (IOException e) { throw new UncheckedIOException(e); } } private void writeCredentialsFile(){ try { properties.store(new FileOutputStream(credentialsFile), null); } catch (IOException e) { throw new UncheckedIOException(e); } } public boolean userExists(String user) { return properties.containsKey(user); } public void setUserPassword(String user, String password) { properties.setProperty(user, hashPassword(user, password)); writeCredentialsFile(); } public boolean isUserPassword(String user, String password) { return hashPassword(user, password).equals(properties.getProperty(user)); } public void deleteUser(String user) { properties.remove(user); writeCredentialsFile(); } /** * TODO Ajouter une fonction de hachage pour ne pas enregistrer le password en clair dans le fichier * TODO Utiliser le user pour ajouter du salage au mot de passe */ private String hashPassword(String user, String password) { return password; } }public static void main(String[] args) { UserCredentials userCredentials = new UserCredentials(new File("C:/userCredentials.properties")); System.out.println(userCredentials.userExists("KX")); // false userCredentials.setUserPassword("KX", "helloWorld"); System.out.println(userCredentials.userExists("KX")); // true System.out.println(userCredentials.isUserPassword("KX", "bonjour")); // false System.out.println(userCredentials.isUserPassword("KX", "helloWorld")); // true userCredentials.deleteUser("KX"); System.out.println(userCredentials.userExists("KX")); // false userCredentials.setUserPassword("toto", "passwordToto"); userCredentials.setUserPassword("tata", "passwordTata"); userCredentials.setUserPassword("titi", "passwordTiti"); }