我在Koa,Passport和Monk有一些麻烦。Koa和护照与MongoDb
我想通过Passport进行简单的本地身份验证。我跟着一些教程,并得到尽可能的:(auth.js)
const
passport = require('koa-passport'),
LocalStrategy = require('passport-local').Strategy,
monk = require('monk'),
wrap = require('co-monk'),
db = monk('localhost/try'),
users = wrap(db.get('users'));
var user = {
id: 1,
username: 'test'
};
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
done(null, user);
});
passport.use(new LocalStrategy(
function(username, password, done) {
if (username === 'test' && password === 'test') {
return done(null, user);
} else {
return done(null, false);
}
}
));
module.exports = passport;
现在这工作正常,但我怎么能在这里使用的,而不是如果(用户名===“测试”我的MongoDB数据库& & password ==='test')?
我试图添加此功能:
function *getUser(name) {
var useri = yield users.find({name:name});
return useri;
};
,然后用它是这样的:
passport.use(new LocalStrategy(
function(username, password, done) {
var useri = getUser(username);
console.log(useri);
if (username === 'test' && password === 'test') {
return done(null, user);
} else {
return done(null, false);
}
}
));
但只有最终得到{}在我的控制台。
那么我该如何做到这一点?在Express中这一切都很容易,但是对于这个Koa我很努力去理解它是如何工作的。
所以你必须使用'co',希望避免它! – 2015-03-29 05:04:58