Réaliser un système de compte

a marqué ce sujet comme résolu.

Bonjour, je cherche à réaliser un système de compte pour un projet Nodejs. Cependant, étant débutant avec les technologies serveurs, j'ai des questions sur la marche à suivre. Voilà les étapes que je compte suivre pour réaliser le système:

1
2
3
4
1. Quels info les cookies doivent-ils contenirs ?
2. Comment faire pour qu'un client sois considéré comme "connecté" le temps de sa navigation ?
3. Les mots de passe doivent être cryptées dans la base de données, mais alors comment les comparer au moment de la connexion ? On recrypte et on compare avec le mot de passe crypté de la base de donnée ?
4. Si des éléments me manque, quel est le plan à suivre pour faire cela ?

Merci d'avance pour vos réponses :) , et désolé pour les questions de bases, les exemples en français manquent.

+0 -0

je ne sais pas tout sur tes questions, mais pour la 3, c'est exactement ça, mots de passes cryptés, et pour le vérifier à la connexion, on recrypte!

joseph

Non. crypter est un angliscisme, on dit chiffrer. Mais en l'occurence, si la base de données est récupérée par un attaquant, on ne veux pas que les mots de passe puissent être retrouvés ; le mot adapté est donc hacher.

Excusez cette incartade, j'éteint le mode nazi.

Edit: je vois que je ne suis pas le seul à faire attention aux mots, ça a son importance :)


  1. Un identifiant qui te permettra de retrouver l'utilisateur. Mais attention, l'utilisateur peut remplacer ton cookie par ce qu'il veut (si il suffit de mettre "1" ou "admin" pour être connecté en administrateur, il y a un petit problème de sécurité ;) ). Par exemple, chez Zeste de savoir (enfin, Django en fait), le cookie s'appelle "sessionid" et contient quelque chose comme "xs42hx20zkw0gumk3v1ltn9e7w". J'imagine qu'une table en bdd permet de faire la correspondance sessionid <-> utilisateur.
  2. Si il valide le formulaire de connection avec succès, tu créés ce cookie avec la valeur qui va bien.
  3. Oui c'est exact. Je salue au passage cette bonne pratique qui n'est malheuresement pas asser respectée …
  4. Je n'ai pas très bien compris :/

Merci beaucoup, mais je n'ai pas compris pour la 2) : pour que l'utilisateur soit toujours "connecté" le temps de sa navigation, il fait enregistrer l'info quelque par. Or, si on le fait dans un cookie, à sa prochaine visite, il sera toujours "connecté" non?

PS: Sinon j'utilise Express et je pense migrer vers Sails bientôt.

+0 -0

PS: Sinon j'utilise Express et je pense migrer vers Sails bientôt.

jerkoco

Sur ExpressJS, tu peux utiliser req.session avec cookie-parser.

Ci-dessous un exemple rapide avec un mot de passe en clair (pour mieux comprendre, en aucun cas à mettre en production dans cet état, on est d'accord) :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
app.use(cookieParser('ma clef secrete'));

// Champs "login" et "password" saisis dans un formulaire
router.post('/', function(req, res, next) {
  login    = req.body.login;
  password = req.body.password; // Mdp à hacher

  if (login == 'admin' && password == 'pass') {
    req.session.login = login;
    res.redirect('/admin');
  } else {
    req.session.error = 'Mauvais identifiants';
    res.redirect('/');
  }
});

// Un middleware de vérification
function privateAccess(req, res, next) {
  if (req.session.login) {
    // Autorisé à poursuivre
    next();
  } else {
    // Non autorisé
    res.redirect('/');
  }
}

// La page dite "sécurisée"
router.get('/admin', privateAccess, function(req, res, next) {
  console.log(req.session.login);
  res.send('Ici le dashboard sécurisé :)');
});
+0 -0

Merci beaucoup, mais je n'ai pas compris pour la 2) : pour que l'utilisateur soit toujours "connecté" le temps de sa navigation, il fait enregistrer l'info quelque par. Or, si on le fait dans un cookie, à sa prochaine visite, il sera toujours "connecté" non? PS: Sinon j'utilise Express et je pense migrer vers Sails bientôt.

jerkoco

Ah d'accord, en fait tu veux que sa session expire au bout d'un certain temps si j'ai bien compris. On ne peut pas savoir quand l'utilisateur a "fini" sa visite, tu dois donc te baser sur la date de connexion : si la date de connexion est plus vieille que X heures / jours / …, tu peux considérer que c'est une nouvelle visite.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte