我正在尝试在我的sails应用程序中实现用户身份验证..但是我遇到了一个问题,在不同的控制器中他们的动作被调用了两次..我已经从我的浏览器检查过,请求只被发送一次..这是一个例子..
// api/controllers/AuthController.js
...
logout: function (req, res) {
console.log("Loggin out");
req.logOut();
res.json({message: 'Logged out succesfully'});
},
...
以下是我的config/routes.js
文件。 (为了便于测试api,使用get进行许多操作。)
module.exports.routes = {
// By default, your root route (aka home page) points to a view
// located at `views/home/index.ejs`
//
// (This would also work if you had a file at: `/views/home.ejs`)
'/': {
view: 'home/index'
},
// testing the api
'get /users/check' : 'UserController.test',
'get /login' : 'AuthController.process',
'get /logout' : 'AuthController.logout',
'get /signup': 'UserController.add',
'get /verify/username/:username?' : 'UserController.checkUsername',
'get /verify/email/:email?' : 'UserController.checkEmail',
// add friend
'get /:user?/addfriend': 'FriendController.addFriend',
// accept request
'get /:user?/friendrequest/:request?/accept': 'FriendController.acceptRequest',
};
我已对此操作应用了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"});
}
};
没有,每当我打电话给<myhost>/logout
我都会得到以下的json ..
{
"error": "Please login"
}
,这是服务器上的输出..
Valid User
Loggin out
User not logged in
这意味着我的控制器的动作被调用了两次..这不仅仅是这个控制器的问题。 UserController.add操作具有相同的问题。我似乎做得很好,但我不知道这个问题来自哪里。任何人都可以建议我如何调试它。或者可能是问题的根源。据我检查..
答案 0 :(得分:0)
哦,几周前我也有同样的问题。
Sails还会在静态文件(如styles.css)上调用中间件。 Console.log req-object比您看到浏览器请求的内容。
有两种方法可以解决这个问题:
1。)尝试在路线中设置skipAssets:true(参见:http://beta.sailsjs.org/#/documentation/concepts/Routes/RouteTargetSyntax.html)
2.。)在您的政策中添加if条件以跳过资产(例如“ .js”,“ .css”等)。