我有以下代码
passport.use(new LocalStrategy({
usernameField: 'username',
passwordField: 'password',
passReqToCallback: true
},
function(req,username, password, next) {
console.log('req' + req.body.socialID );
var res ="";
userController.ValidateLogin(req,res,function(userDetails){
console.log('g d' + userDetails);
req.user = userDetails;
return next(null,userDetails);
});
}));
如果有任何错误,例如
,我会收到来自usercontroller.validatelogin的回复return res.send({ Status:403, Msg: 'There was a problem while fetching the record' });
它说res.send不是一种方法。 如何在usercontroller.validatelogin中传递res以返回响应。
答案 0 :(得分:0)
我相信当你使用护照策略时,你应该返回done()
。在那里,如果您的用户已经过验证,您可以通过该用户。例如,如果您检查到数据库中没有用户,然后您成功创建了它,则可以执行
return done(null, user, { message: "Hello user from db" });
如果使用了用户名,则为用户传递false:
return done(null, false, { message: "User exists . Try again" });
然后在你的路线上你可以做
app.get("/route", (req, res, next) => {
passport.authenticate(strategyName, function (err, user, info) {
/*now you have access to res and now you can do if condition to do
stuff when there is a user don't forget to do req.login() */
})
要回答您的问题,res
中没有添加passport.use
我认为他们只有passReqToCallback
这就是为什么您只能使用req