如何确保控制器操作仅在sails.js应用程序中调用一次。。?

如何确保控制器操作仅在sails.js应用程序中调用一次。。?,sails.js,passport.js,Sails.js,Passport.js,我正在尝试在我的sails应用程序中实现用户身份验证。。但是我在不同的控制器中遇到了一个问题,他们的操作被调用了两次。。我已通过浏览器进行检查,请求只发送一次。。下面是一个例子 // api/controllers/AuthController.js ... logout: function (req, res) { console.log("Loggin out"); req.logOut(); res.json({message: 'Logge

我正在尝试在我的sails应用程序中实现用户身份验证。。但是我在不同的控制器中遇到了一个问题,他们的操作被调用了两次。。我已通过浏览器进行检查,请求只发送一次。。下面是一个例子

 // api/controllers/AuthController.js
 ...
 logout: function (req, res) {
       console.log("Loggin out");
       req.logOut();
       res.json({message: 'Logged out succesfully'});

  },
...
下面是我的
config/routes.js
文件。(使用get执行许多操作只是为了便于测试api….)

我已将isAuthenticated策略应用于此操作。。就像

module.exports = function(req, res, next) {
    if(req.isAuthenticated()) {
        console.log("Valid User");
        return next();
    }
    else {
        console.log("User not logged in");
        return res.json({error: "Please login"});
    }
};
否每当我调用
/logout
时,我都会返回以下json

{
  "error": "Please login"
}
这是服务器上的输出

Valid User
Loggin out
User not logged in
这意味着我的控制器的操作被调用了两次。。这不仅仅是这个控制器的问题。UserController.add操作具有相同的问题。我似乎每件事都做得很好,但我不知道这个问题是从哪里来的。有人能建议我如何调试它吗。或者问题的根源是什么。据我所知

  • 浏览器未发送两次请求
  • 控制器的操作被调用两次,与之关联的中间件也被调用两次

  • 哦,几周前我也有同样的问题

    Sails还调用静态文件(比如styles.css)上的中间件。记录req对象,然后查看浏览器请求的内容

    有两种方法可以处理此问题:

    1.)尝试在路线中设置SkipPassets:true(请参阅:)


    2.)在您的策略中添加一个if条件以跳过资产(如“.js”、“.css”等)。

    我在操作结束时添加了一个
    return
    ,现在只调用一次。。但我仍然不知道为什么它被称为两次我说的是行动而不是资产
    Valid User
    Loggin out
    User not logged in