我在 Koa、Passport 和 Monk 方面遇到了一些麻烦。
我想使用 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 数据库而不是 if (username === 'test' && 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 的东西,我真的很难理解它是如何工作的。