2017-10-06 15 views
0

Hellooo, donc j'ai un serveur node.js fonctionnant en arrière-plan et je crois que c'est ce qui "se connecte" les utilisateurs (je n'ai pas écrit le backend).Déconnexion de l'utilisateur en javascript en supprimant les cookies?

app.use(function (req, res, next) { 
    var nodeSSPI = require('node-sspi'); 
    var nodeSSPIObj = new nodeSSPI({ 
     retrieveGroups: true, 
     domain: "CAMISCOM" 
    }); 
    if (req.secure) { 
     nodeSSPIObj.authenticate(req, res, function (err) { 
      res.finished || next(); 
    }); 
    } else { 
     next(); 
    } 
}); 

La boîte de connexion ressemble à ceci en chrome 61:

enter image description here

que j'ai trouvé quand je fais "Effacer la navigation Data-> Cookies et autres données de site" seulement, il consignera moi dehors. La fermeture du navigateur et la réouverture me déconnectent également.

J'ai essayé d'effacer les cookies dans la partie frontale, mais document.cookie est une chaîne vide. Je suis un peu perdu ici. Comment puis-je implémenter une fonctionnalité de déconnexion?

Merci!

MISE À JOUR: Je crois que je devrais tenter de supprimer req.connection.user du côté backend. Actuellement, j'ai un appel ajax sur le front appelant un routeur sur le backend et à partir de là j'ai accès à req où je l'ai défini égal à null, mais cela ne fait rien

Dernière mise à jour: La solution pour moi était de ont le backend faire

delete req.connection.user 
delete req.connection.userSid 
delete req.connection.userGroups 

via un routeur, puis après le succès de ce routeur les rediriger vers https://log:[email protected]

+3

Si le cookie est HttpOnly vous ne pourrez pas y accéder à partir JS. – Joe

+0

Dans Outils de développement -> Application -> Cookies, aucun cookie n'est affiché. –

+2

La déconnexion est une action côté serveur. Faire en sorte que le client oublie sa session ne met pas fin à la session sur le serveur - cela crée seulement l'apparence d'une déconnexion. – Ags1

Répondre

0

Il ressort du code de test sur le nœud-sspi le site Github que vous n'êtes pas connecté à un utilisateur lors d'une requête en faisant cela sur le serveur:

delete req.connection.user; 
delete req.connection.userSid; 
delete req.connection.userGroups; 

Il est un peu étrange qu'il n'y ait aucun document pour déconnecter quelqu'un.


C'est peut-être pertinent aussi: How to log out user from web site using BASIC authentication?

+0

Peut-être une question stupide mais fait cela via un routeur (POST) compte comme "le faire sur le serveur" –

+1

@JustinBraham - Oui, c'est un endroit parfaitement bien pour le faire aussi longtemps que la demande vient de l'utilisateur que vous vouloir se déconnecter. – jfriend00

+1

@JustinBraham - Ajout d'une autre idée à ma réponse. – jfriend00