У меня проблемы с 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 (имя пользователя === 'test' && пароль === '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 я действительно изо всех сил пытаюсь понять, как все это работает.