【发布时间】:2017-01-16 23:55:30
【问题描述】:
我在快速服务器的路由上有一个passport-amazon 策略(为简洁起见,我已经从回调中删除了用户处理代码):
passport 在 server.js 中被初始化:
//configure passport
app.use(passport.initialize());
app.use(passport.session());
require('./config/passport')(passport);
护照策略添加在require('./config/passport')(passport):
passport.use(
new AmazonStrategy({
clientID: process.env.AMAZON_CLIENT_ID,
clientSecret: process.env.AMAZON_CLIENT_SECRET,
callbackURL: process.env.AMAZON_CALLBACK_URL
},
(accessToken, refreshToken, profile, done) => {
console.log('in the callback for amazon auth');
//user handling code here
return done(null, user);
);
路线:
routes.get(
'/login',
passport.authenticate(
'amazon',
{
scope: ['profile']
}
),
(req, res) => {
console.log('something happens here');
}
)
身份验证进入亚马逊并使用回调 URL。我在回调 url 路由上的中间件:
function isLoggedIn(req, res, next) {
if (req.isAuthenticated())
return next();
res.redirect('/');
}
正在被调用,req.isAuthenticated() 是 false。护照回调函数从不登录到控制台。
【问题讨论】:
-
您还没有在亚马逊护照中间件中使用
done返回用户 -
我删除了该示例中的代码部分以保持整洁。问题是该函数甚至从未被调用过。该日志语句永远不会执行。
-
我唯一想到的是你没有初始化护照
-
我在问题中添加了护照初始化。
-
我在控制台消息中添加了 process.nextTick(() => {}) ,但仍然一无所获。
标签: node.js express passport.js