Node.js 有时sails js会话不会破坏

Node.js 有时sails js会话不会破坏,node.js,sails.js,waterline,Node.js,Sails.js,Waterline,我已经使用sailsjs创建了一个web应用程序。以下是注销功能 logout: function(req, res) { req.session.destroy(function(err) { res.redirect('/'); }); } 有时用户不会从一次单击中注销。但无论如何,用户正在重定向到我的主页。然后我必须再次单击注销按钮注销用户。将用户发送到注销页面,而不是重定向或在回调中设置超时 logout: function(req, re

我已经使用sailsjs创建了一个web应用程序。以下是注销功能

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

有时用户不会从一次单击中注销。但无论如何,用户正在重定向到我的主页。然后我必须再次单击注销按钮注销用户。

将用户发送到注销页面,而不是重定向或在回调中设置超时

logout: function(req, res) {
      req.session.destroy(function(err) {
           return res.view('/logout');
      });
}

试试这个

logout: function(req, res) {
        // clear login sessions here
        req.session.destroy(function(err) {
          setTimeout(function(){
            return res.redirect('/login');
          }, 2500); // redirect wait time 2.5 seconds
        });
      }
只是让sails js推迟清理会议,
对我来说工作正常…

如果使用javascript重定向(在destroy上设置一个标志,该标志在视图中插入一个js重定向),而不是从应用程序重定向,它是否工作?谢谢。是否有一种方法可以将数据从控制器传递到javascript。您找到解决方案了吗?甚至我都在挣扎。谢谢你的回答,米克尔,我会尝试一下。是的,根据sails、express、express connect的版本,他们的问题是重定向。还取决于会话的设置方式,如果不起作用,我会更新您的问题,如果它是Redis会话、内存或纯cookie?我尝试使用上述方法。但对我不起作用。我不使用Redis或cookie。我只是给会话变量赋值。哦,我上面的代码没有返回res.view()。我会尝试一下。这似乎是一个未解决的问题,大多数身份验证示例都使用passport,我正在node/sails中重建一个遗留php应用程序,我面临着这个问题,有时会话未被破坏,策略失败。
logout: function(req, res) {
        // clear login sessions here
        req.session.destroy(function(err) {
          setTimeout(function(){
            return res.redirect('/login');
          }, 2500); // redirect wait time 2.5 seconds
        });
      }