Partage
  • Partager sur Facebook
  • Partager sur Twitter

[ReactJS-NodeJS] Gestion de l'utilisateur

19 mars 2019 à 11:20:49

Bonjour à tous,

Je sais que mon titre n'est pas très explicite. Je débute avec les technos NodeJS en BACK et ReactJS pour le FRONT.

Je me pose des questions concernant l’accessibilité de mon utilisateur après sa connexion. Je m'explique, j'ai créée coté FRONT mon formulaire de création de compte et de connexion. Lors de la connexion, j'envoie à mon API mon email et mon mot de passe. Après vérification, mon API génère un token avec "jwt-simple" contenant l'email, l'ID utilisateur stocké en BDD et une date d'expiration. Je stocke ensuite ce token dans les "localStorage". Jusqu'ici pas de problème.

Je me pose des questions à ce niveau-là. Coté FRONT afin de vérifier si l'utilisateur est connecté je checke si dans le localStorage ma clé est défini. Je donne ainsi accès aux diverses routes protégés grâce à cette simple vérification. Voici mes questions :

  • Est-ce assez sécurisé de donner accès aux routes protégés de l'application avec cette seule vérification ? Sachant que chaque appel vers mon API (sauf login et register) est protégé car j'envoie en headers de chaque requête les "Authorization" contenant la clé stocké en localStorage et je fais des vérifications sur l'utilisateur.
  • Est-il suffisant de protéger seulement son API ?

Par exemple si après connexion, je souhaite aller sur le profil de l'utilisateur, je dois simplement faire ma requête vers mon API avec les headers et c'est mon API qui me retourne les infos. En aucun cas, je dois décoder mon token et envoyé en paramètre l'email ou l'id stocké ? Je peux potentiellement décodé mon token pour mettre l'id de l'utilisateur dans ma route coté FRONT.

J'ai beaucoup de mal à voir comment appliquer une plus grande sécurité coté FRONT. Donc désolé si vous ne comprenez pas vraiment mon problème.

  • Partager sur Facebook
  • Partager sur Twitter
19 mars 2019 à 14:10:33

Bonjour,

je te conseillerais de faire un hash des mots de passe avant de les stocker dans ta db si ce n'est pas déjà fait.

Pour la connexion, tu peux faire un call juste pour vérifier que le token est bon, si il est mauvais, une petite suppression du token dans le local storage et redirection vers le login, et en cas de réussite, envoyer les infos de session. Si le local storage contient un token, il n'est pas forcément valide.

Lorsque tu décode le token (côté api), tu peux attacher le payload du token à la requête pour savoir qui fait quoi sans passer de paramètre supplémentaire où faire de requête en db.

Le côté front n'est sensé contenir que de la mise en forme. Je ne vois pas vraiment ce que tu veux dire par sécuriser le front, c'est l'api qui doit être parfaitement sécurisée.

  • Partager sur Facebook
  • Partager sur Twitter
23 mars 2024 à 8:21:53

Bonjour,

Le message qui suit est une réponse automatique activée par un membre de l'équipe de modération. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention.
Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

Pour plus d'informations, nous vous invitons à lire les règles générales du forum

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération
  • Partager sur Facebook
  • Partager sur Twitter

Pas d'aide concernant le code par MP, le forum est là pour ça :)