我试图将Passport与SailsJS一起使用。
永远不会调用Emp = new Manager;
Manager *Mng = (Manager*)Emp;
Mng->Name = "Adam";
Mng->Designation = "BOSS";
方法,也不会发送任何响应。
我在passport.authenticate('facebook')
初始化了Passport和我的策略。
config/passports.js
:
config/passport.js
我初始化护照和序列化方法。
我按照此顺序在const passport = require('passport');
const FacebookStrategy = require('passport-facebook').Strategy;
passport.serializeUser(function (user, done) {
done(null, user.id);
});
passport.deserializeUser(function (id, done) {
User.findOne({id: id}, function (err, user) {
done(err, user);
});
});
passport.use(new FacebookStrategy({
/* IDS */
}, (token, refreshToken, profile, next) => {
/* logic here */
})
}));
文件中设置了passport.init()
和passport.session()
个中间件:
config/http.js
路由'startRequestTimer',
'cookieParser',
'session',
'passportInit',
'passportSession',
使用以下控制器:
/auth/facebook
当我拨打passport.authenticate('facebook', {scope: ['email', 'user_about_me']},
(err, user) => {
req.logIn(user, (err) => {
if (err) return res.send(err);
return res.redirect('/');
})
});
时,我的所有请求都超时,护照从不调用我的身份验证方法。
我做错了什么?
答案 0 :(得分:0)
passport.authenticate返回一个函数,您必须调用该函数才能工作。
以下是我如何使用它:
'facebook': function (req, res, next) {
passport.authenticate('facebook', {scope: ['email', 'user_about_me']}, function (err, user) {
req.logIn(user, function (err) {
if(err) {
res.redirect('user/login');
} else {
res.session.user = user;
res.redirect('/');
}
});
})(req, res, next);
},