Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

req.session.destroy() not working in Nodejs

Trying to perform logout operation by destroying session using req.session.destroy() in Nodejs but it is not working.

Nodejs code:

router.get('/logout', function(req, res) {
  req.session.destroy();
  console.log(session.email);
  res.redirect('/signup');
});

I am calling /logout api from my html file.

HTML CODE:-

<div class="container-fluid">
        <header class="row top text-center">
            <div class="col-md-2 righttopnav" >
                <a href="index" style="font-size:25px;">Auto<b>SecT</b></a>
            </div>
            <div class="col-md-10 topnav" id="myTopnav">
                <%if(session.email){%>
                <a href="/logout">Logout</a>
                <% } else { %>
                <a href="/signup">Signup / Login</a>
                <% } %>
                <a href="#career">Career</a>
                <a href="#clients">Clients</a>
                <a href="#services">Services</a>
            </div>
        </header>

        <section class="content">   
            <div class="row text-center">
                <div class="col-md-12 " >
                    <p class="p1"><%-session.email%>Scan your Website or APP with just a <b>click!</b></p>
                </div>
            </div>
        </section>

        <div class="row text-center" style="padding-top:5%;">
            <div class="col-md-4">
                <i class="fa fa-globe fa-5x" aria-hidden="true" style="color:#c2c2a3"></i>
                <br>
                <input class="url" type="url"  placeholder="Enter your url" style="border-radius: 20px ">
            </div>  
            <div class="col-md-4">
                <p class="p">OR</p>
            </div>
            <div class="col-md-4">
                <i class="fa fa-file-o fa-5x" aria-hidden="true" style="color:#c2c2a3; padding-bottom: 4% "></i>
                <br>
                <label class="btn btn-primary btn-sm  btn-file upload">
                <i class="fa fa-upload fa-2x" aria-hidden="true"></i>
                <input type="file" style="display: none;">
                </label>
            </div>
        </div>
        <div class="row">
            <div class="col-md-12">
                <div class="col-md-12 text-center" style="padding-top: 5%; margin-bottom: 1%; border-radius: 20%;">
                <input type="submit" id="button" class="btn btn-success btn-md" value="Scan">
            </div>
            </div>
        </div>
</div>

/logout redirects me to the required page but session does not get destroyed.

like image 785
Harshit Sharma Avatar asked Dec 24 '22 19:12

Harshit Sharma


2 Answers

Please redirect once session destroy. You have to move your code for redirect in call back.

router.get('/logout', function(req, res) {
  req.session.destroy(function(err){
     if(err){
        console.log(err);
     }else{
         console.log(session.email);
         req.end();
         res.redirect('/signup');
     }
  });

});
like image 90
Sunil Prajapati Avatar answered Dec 28 '22 10:12

Sunil Prajapati


This worked for me.

.get('/logout', function (req, res) {
    req.logout();
    req.session = null; 
    res.redirect('/back/to/login');
});
like image 37
Soriddo Sunēku Avatar answered Dec 28 '22 09:12

Soriddo Sunēku