done не является функцией в passport.js - PullRequest
0 голосов
/ 28 мая 2019
const passport = require('passport');
const localStrategy = require('passport-local').Strategy;
const mongoose = require('mongoose');

var User = mongoose.model('User');

passport.use(
    new localStrategy({ usernameField: 'email' },
        (req, username, password, done) => {
            User.findOne({ email: username },
                (err, user) => {

                    if (err)
                        return done(err);
                    // unknown user
                    else if (!user)
                        return done(null, false, { message: 'Email is not registered' });
                    // wrong password
                    else if (!user.verifyPassword(password))
                        return done(null, false, { message: 'Wrong password.' });
                    // wrong type
                    else if (!user.verifyType(req.body.type))
                        return done(null, false, { message: 'Wrong type.' });
                    // authentication succeeded
                    else
                        return done(null, user);
                });
        })
);

сделано не является функцией, это ошибка Использование PassportJS, как передать одно дополнительное поле формы в стратегию локальной аутентификации?

Ответы [ 2 ]

0 голосов
/ 28 мая 2019
passport.use(
    new localStrategy({ usernameField: 'email' },
        yourParameter
        (req, username, password, done) => {
            User.findOne({ email: username },
                (err, user) => {

                    if (err)
                        return done(err);
                    // unknown user
                    else if (!user)
                        return done(null, false, { message: 'Email is not registered' });
                    // wrong password
                    else if (!user.verifyPassword(password))
                        return done(null, false, { message: 'Wrong password.' });
                    // wrong type
                    else if (!user.verifyType(yourParameter))
                        return done(null, false, { message: 'Wrong type.' });
                    // authentication succeeded
                    else
                        return done(null, user);
                });
        })
);
0 голосов
/ 28 мая 2019

просто удалите параметр "req" в анонимной функции внутри нового localStrategy, и все будет в порядке.

У вас нет параметра req в этом коде, поэтому вы не можете использовать его там

как это:

 (username, password, done) => {
...