我使用本地护照作为我的策略,并使用蓝鸟来实现这一承诺。我不确定这是不是坏事,但这是我想做的。我目前的问题是我不知道如何从我的路线中获取resolve
和/或reject
值。
我将发布本地策略。一切正常,我得到了正确的信息。我只需要将此信息提供给路线并且能够使用req.user
我收到authUser
并获得任何errors
,例如自定义错误密码错误。但如果看到其他代码有帮助,请告诉我。
passport.use(
new LocalStrat((username, password) => {
return new Promise((resolve, reject) => {
controllers.user
.getUserByUsername(username)
.then(user => {
user = user;
return controllers.user.comparePassword(password, user);
})
.then(authUser => {
resolve(authUser);
})
.catch(err => {
reject(err);
});
});
})
);
/* User Login */
router.post('/login', passport.authenticate('local'), (req, res) => {
// Need to access promise values here
console.log(req.user);
});
答案 0 :(得分:4)
您需要注意的主要事项是Strategy
的API不会处理Promise
。你将不得不处理它想要的回调参数。您可以在此处查看函数签名:Configure Strategy。在我的实施中,我的User
与Promise
进行了交易,只是在then()
的{{1}}内调用了回调。
由于您必须将要使用的Promise
提交给护照,并且护照要求使用回调约定,因此您必须遵循其API。截至目前,护照并不真正支持其API内的Promise。我要说看一下护照问题Add support promises flow并添加对与promises集成的支持。我不认为它会在快速移民之前发生。不过。
这是我使用Strategy
来处理异步登录的方式:
Strategy