- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
With a little help我已经到达以下代码来 promise a passport.js login strategy.
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
var Promise = require('bluebird');
var bcrypt = require('bcrypt');
var db = require('./db').db; //users are stored in mongo
//I'm using bluebird.js for promises
var users = Promise.promisifyAll(db.users);
var compare = Promise.promisify(bcrypt.compare);
// This strategy is used by passport to handle logins
module.exports.localStrategy = new LocalStrategy(function(username, password, done) {
users.findOneAsync({username: username}).bind({})
.then(function(user) {
if (!user) {
throw new NoMatchedUserError('Incorrect username.');
//should be equivalent to:
// return done(null, false, {message:'something'});
}
this.user = user;
return compare(password, user.password);
})
.then(function(isMatch) {
if (isMatch) {
return this.user;
//is equivalent to:
// return done(null, this.user);
}
else {
throw { message: 'Incorrect password.' };
//should be equivalent to:
// return done(null, false, {message:'something else'};
}
})
.nodeify(done);
});
调用 nodeify(done)我可以处理密码匹配的路径,但我不知道如何将可选的第三个参数传递出去,以便 passport.js 可以使用它。
是否可以处理两个失败(不是错误)路径?
更新:
正如评论中所问,我在 Github 上创建了一个问题,并且(非常迅速地)在 Bluebird v2.0 中添加了此功能
最佳答案
关于javascript - 如何使用 Bluebird.js nodeify 将第三个参数传递给回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23920589/
With a little help我已经到达以下代码来 promise a passport.js login strategy. var passport = require('passport'
重现步骤: create-react-native-app proj && cd proj && npm i 正在安装使用加密的包。执行 https://www.npmjs.com/package/r
在下面的代码中,我希望在调用 processhttprequest() 时将变量 a、b、c 作为参数传递。 var q = require("q"); var request = r
我遇到的问题已经让我头疼了好几个小时。我正在开发一个在 nativescript 环境中开发的移动应用程序。由于我的应用程序需要解码 JSON Web token 以用于登录目的,我尝试安装 npm
我是一名优秀的程序员,十分优秀!