Я пытаюсь создать приложение CRUD для своего портфолио. Я хочу, чтобы пользователь мог зарегистрироваться и войти в систему, а затем сделать некоторые вещи внутри (это трекер калорий). Пользователь может зарегистрироваться, но когда я пытаюсь войти, я получаю:
this.verify не является функцией
Вот код входа:
// Authenticate Login
app.post("/login", (req, res, next) => {
passport.authenticate("local", {
successRedirect: "/myprofile",
failureRedirect: "/login",
failureFlash: true
})(req, res, next);
});
Паспорт. js
const LocalStrategy = require("passport-local").Strategy,
bcrypt = require("bcryptjs");
// User Model
const User = require("../models/user");
module.exports = function(passport) {
passport.use(
new LocalStrategy({usernameField:"username"}, {passReqToCallback: true}, (username, password, done) => {
// Check if there is a user with this username
User.findOne({
username: username
}).then(user => {
if(!user) {
return done(null, false, {message: "There is not a user with this username"});
}
// Check if the password is correct
bcrypt.compare(password, user.password, (err, isMatch) => {
if(err) throw err
if(isMatch) {
return done(null, user)
} else {
return done(null, false, {message: "Password is invalid"})
}
});
})
.catch(err => console.log(err));
})
);
passport.serializeUser((user, done) => {
done(null, user.id);
});
passport.deserializeUser((id, done) => {
User.findById(id, (err, user) => {
done(err, user)
})
})
}
Если кому-то интересно или вам нужен еще код, я, конечно, могу опубликовать его, я не уверен, что еще включить. Но если вам это нравится, вот ссылка на GitHub Repo .
Спасибо за вашу помощь, оставайтесь здоровыми
Edit1: Fullstack of вопрос (или надеюсь это он)
TypeError: this._verify is not a function
at Strategy.authenticate (C:\Users\Dell Vostro 3885\Documents\Programming\PersonalProjects\CalorieTracker\node_modules\passport-local\lib\strategy.js:90:12)
at attempt (C:\Users\Dell Vostro 3885\Documents\Programming\PersonalProjects\CalorieTracker\node_modules\passport\lib\middleware\authenticate.js:366:16)
at authenticate (C:\Users\Dell Vostro 3885\Documents\Programming\PersonalProjects\CalorieTracker\node_modules\passport\lib\middleware\authenticate.js:367:7)
at C:\Users\Dell Vostro 3885\Documents\Programming\PersonalProjects\CalorieTracker\app.js:187:7
at Layer.handle [as handle_request] (C:\Users\Dell Vostro 3885\Documents\Programming\PersonalProjects\CalorieTracker\node_modules\express\lib\router\layer.js:95:5)
at next (C:\Users\Dell Vostro 3885\Documents\Programming\PersonalProjects\CalorieTracker\node_modules\express\lib\router\route.js:137:13)
at Route.dispatch (C:\Users\Dell Vostro 3885\Documents\Programming\PersonalProjects\CalorieTracker\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (C:\Users\Dell Vostro 3885\Documents\Programming\PersonalProjects\CalorieTracker\node_modules\express\lib\router\layer.js:95:5)
at C:\Users\Dell Vostro 3885\Documents\Programming\PersonalProjects\CalorieTracker\node_modules\express\lib\router\index.js:281:22
at Function.process_params (C:\Users\Dell Vostro 3885\Documents\Programming\PersonalProjects\CalorieTracker\node_modules\express\lib\router\index.js:335:12)
at next (C:\Users\Dell Vostro 3885\Documents\Programming\PersonalProjects\CalorieTracker\node_modules\express\lib\router\index.js:275:10)
at methodOverride (C:\Users\Dell Vostro 3885\Documents\Programming\PersonalProjects\CalorieTracker\node_modules\method-override\index.js:79:5)
at Layer.handle [as handle_request] (C:\Users\Dell Vostro 3885\Documents\Programming\PersonalProjects\CalorieTracker\node_modules\express\lib\router\layer.js:95:5)
at trim_prefix (C:\Users\Dell Vostro 3885\Documents\Programming\PersonalProjects\CalorieTracker\node_modules\express\lib\router\index.js:317:13)
at C:\Users\Dell Vostro 3885\Documents\Programming\PersonalProjects\CalorieTracker\node_modules\express\lib\router\index.js:284:7
at Function.process_params (C:\Users\Dell Vostro 3885\Documents\Programming\PersonalProjects\CalorieTracker\node_modules\express\lib\router\index.js:335:12)