Bonjour,

Cela fait depuis hier que je m'arrache les cheveux sur ce problème.
J'utilise VueResource pour faire des appels à mon serveur Express. Dans ce cas présent, j'envoie une requête en POST avec le nom d'utilisateur et le mot de passe pour l'authentifier, grâce à ce code.

this.$http.post('/dashboard', JSON.stringify(this.user)).then((response) => {
                  if (!response.body) {
                      let message = "Aucun utilisateur trouvé pour cet utilisateur";
                      this.$emit('showAlert', [message])
                  }
              }, (response) => {
                  alert("marche pas")
              });

Et du côté de mon serveur j'ai ça :

router.post('/dashboard', function(req, res) {
    // Nous allons vérifier que le nom d'utilisateur et le password existe en base
    var user = req.body;
    user.username = "test";
    user.password = "test";
    loginController(user.username, user.password).then(function(utilisateurReconnu) {
      if(utilisateurReconnu){
        res.render('../views/dashboard.html');
      } else {
        res.send(utilisateurReconnu);
      }

    });
});

C'est la fonction loginController qui permet de renvoyer "true" si l'utilisateur est reconnu.
Via des console.log() je sais que je passe dans ma branche de render, j'ai même essayé de throw une erreur via le callBack de la fonction render, mais aucune erreur est rencontrée.

Mais au final cela ne m'affiche rien.

Via l'outil POSTMAN, j'ai même essayé d'effectué une requête POST sur /dashboard, et j'ai bien mon rendu html.

Je dois louper quelque chose mais là c'est en dehors de mes compétences :(

Si quelqu'un à une idée.

4 réponses


Salut,

As-tu essayé de mettre le chemin d'accès en absolu par hasard ? Tu peux utiliser la variable __dirname pour cela.

Neewd
Auteur

Salut,

J'ai contourné le problème en évitant de render dans cette fonction. Mais d'utiliser simplement le form action='dash' method='post' en passant les data et de render si l'utilisateur est reconnu.
Maintenant je suis sur un autre problème. Lorsque l'utilisateur n'est pas reconnu ou qu'il rentre un mauvais mot de passe, je le redirect('/') et j'aimerais passer des données au component VueJS pour qu'il m'affiche une alert.
J'ai essayé via les sessions, ça ne marche pas, via les cookies idems.

Je ne sais pas vers quoi m'orienter, si quelqu'un à une idée ?

Salut,

Pourquoi le rediriger si c'est juste une erreur de saisie ? tu peux pas juste afficher ca en JS ?
Sinon, si j'ai bien compris j'utiliserai les "sessions" flash pour la gestion des messages d'erreurs-succès après redirection, sous express : http://stackoverflow.com/how-to-send-flash-messages-in-express

Neewd
Auteur

C'est vrai que dit comme ça, ça à l'air con, j'ai pas essayé sans redirect('/');
Mais il faut quand même que j'envoi au client le fait qu'il se soit trompé, pour que VueJS puisse afficher l'erreur.
Le problème étant que j'ai essayé de mettre des <% %> dans la balise template de mon component VueJS mais il ne l'interprète pas correctement et me dit que la variable n'est pas défini : /