passport.authenticate()
,如何定义 Promise ,而不是使用 Custom Ballback ?
此处引用了passport.authenticate()
的用法:
http://www.passportjs.org/docs/authenticate/
在此页面中,有一个部分自定义Ballback :
如果内置选项不足以处理身份验证请求,则可以提供自定义回调以允许应用程序处理成功或失败。
app.get('/login', function(req, res, next) {
passport.authenticate('local', function(err, user, info) {
if (err) { return next(err); }
if (!user) { return res.redirect('/login'); }
req.logIn(user, function(err) {
if (err) { return next(err); }
return res.redirect('/users/' + user.username);
});
})(req, res, next);
});
自定义回调定义为:
function(err, user, info){...}
我想做的是用 Promise 代替此 Custom Callback 。
[Promise](resolve, reject)
.then(res => {
})
.catch(err => {
})
我该怎么做?谢谢。
答案 0 :(得分:3)
您可以使用es6-promisify软件包。它非常易于使用,下面是一个示例:
df = pd.DataFrame({'a':['1','2','3']})
df['b'] = np.nan
df['b']=df['b'].astype(object)
for index in df.index:
df.loc[index, 'b'] = [{'a':1}]
print(df.loc[index, 'b'] ,index)
[{'a': 1}] 0
[{'a': 1}] 1
[{'a': 1}] 2
df
a b
0 1 [{'a': 1}]
1 2 [{'a': 1}]
2 3 [{'a': 1}]
答案 1 :(得分:0)
感谢大家对@ sterling-archer和@ el-finito的有用答复
我发现Passport.js Github存储库中的一个相关问题有助于使用Passport处理password.authenticate()回调: "Using node's promisify with passport"
List<String> a = Arrays.asList("werdsegs", "wsghnmrst", "vaasdfdas", "iujhgfds");
List<String> b = Arrays.asList("aalaksdjf", "erftghjuk", "werdsejfksd", "asdklgjaklgj", "poijgndf");
Set<String> set = a.stream().map(s -> s.substring(0,5)).collect(Collectors.toSet());
List<String> c = b.stream().filter(s -> ! set.contains(s.substring(0,5))).collect(Collectors.toList());
System.out.println(c); // prints: [aalaksdjf, erftghjuk, asdklgjaklgj, poijgndf]