【问题标题】:req.session.destroy() not working in Nodejsreq.session.destroy() 在 Nodejs 中不起作用
【发布时间】:2022-02-16 15:48:42
【问题描述】:

尝试通过在 Nodejs 中使用 req.session.destroy() 销毁会话来执行注销操作,但它不起作用。

Nodejs 代码:

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

我正在从我的 html 文件中调用 /logout api。

HTML 代码:-

<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 将我重定向到所需的页面,但会话不会被破坏。

【问题讨论】:

    标签: node.js session express


    【解决方案1】:

    请在会话销毁后重定向。 您必须在回调中移动代码以进行重定向。

    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');
         }
      });
    
    });
    

    【讨论】:

    • 一定有一些日志
    • 那我该怎么办?
    • 我是nodejs的初学者请帮忙
    • 请您分享您的存储库
    【解决方案2】:

    这对我有用。

    .get('/logout', function (req, res) {
        req.logout();
        req.session = null; 
        res.redirect('/back/to/login');
    });
    

    【讨论】:

    • 这会导致安全问题,因为会话没有被破坏!
    【解决方案3】:

    尝试销毁会话,然后注销:

     req.session.destroy();
     req.logout();
     res.redirect('/signup');
    

    【讨论】:

      【解决方案4】:

      这个解决方案对我有用:

      req.session.destroy(function () {
          req.logout();
          res.redirect('/');              
      });
      

      【讨论】:

        【解决方案5】:

        我做了两件事并成功了。首先,我在会话选项中将 unset 设置为 destroy。其次,删除会话如下

        router.get('/logout', function(req, res) {
                delete req.session;
                res.redirect('/signup');
            });
        

        参考https://github.com/expressjs/session

        【讨论】:

          【解决方案6】:

          您不应在注销时使用href &lt;a href="/logout"&gt;Logout&lt;/a&gt;

          只需创建一个&lt;p&gt;&lt;button&gt;

          您的请求有冲突。

          那么,你的res.redirect('/signup'); 应该可以工作了。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-07-30
            • 2023-03-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-17
            相关资源
            最近更新 更多