Ключ в MongoDB не работает при аутентификации - PullRequest
0 голосов
/ 01 мая 2020

У меня есть следующий профиль в моей базе данных mongodb, и ключ не найден моим приложением. js для отображения следующего экрана e js. Я не получаю ошибку, вместо этого ничего не происходит. Я отображаю следующий экран в коде main.e js, но я остаюсь на странице входа.

{
    "_id" : ObjectId("5eab33dd008585722a7b1dd8"),
    "key" : "123",
    "__v" : 0
}

Строка от login.e js, которая получает ключ

<div class="form-group">
                      <input name="key" type="password" class="form-control form-control-user" id="key" placeholder="Enter Key">
       </div>

Приложение. js

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(expressSession({
  secret: "secret"
}));

app.use(passport.initialize());
app.use(passport.session())

passport.use(new LocalStrategy({
  usernameField: "key",
  // passwordField: "password"
},function(key, next) {
  //},function(email, password, next) {
  User.findOne({
    key: key
  },function (err, user) {
  if (err) return next (err);
  if (!user){
    // if (!user | !bcrypt.compareSync(key, user.key)){
    return next({message: 'Key is incorrect'})
  }
    next(null, user);
  })
}));

passport.serializeUser(function (user, next) {
  next(null, user._id);
});

passport.deserializeUser(function (id, next) {
  User.findById(id, function(err, user){
    next(err, user);
  });
});

app.get('/',function(req, res, next){
  res.render('index', {title: "Hello World"})
})

app.get('/main',function(req, res, next){
  res.render('main')
})

app.get('/login',function(req, res, next){
  res.render('login')
})

app.post('/login',
    passport.authenticate('local', { failureRedirect: '/login' }),
    function(req, res) {
      res.redirect('/main');
    });

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  next(createError(404));
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

module.exports = app;
...