पासपोर्ट के साथ उपयोगकर्ता प्रमाणीकरण सीखते समय, मैं कौरसेरा से नोड जेएस कोर्स सीख रहा हूं, मुझे इस त्रुटि का सामना करना पड़ रहा है। मैंने पाठ्यक्रम में जो कहा गया था उसका ठीक से पालन किया है, लेकिन मुझे यह त्रुटि मिल रही है!

मैं समझता हूं कि उस पाठ्यक्रम की कुछ सामग्री बहिष्कृत है, लेकिन इस त्रुटि को कैसे हल किया जाए?

त्रुटि

Connected correctly to server
(node:7856) UnhandledPromiseRejectionWarning: MissingPasswordError: No password was given
    at B:\Node\Node JS\conFusionServer\node_modules\passport-local-mongoose\index.js:103:17
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
(node:7856) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)        
(node:7856) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code

मेरा मॉडल

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var passportLocalMongoose = require('passport-local-mongoose');

var User = new Schema({
    // username: { // auto added by passport
    //     type: String,
    //     required: true,
    //     unique: true,
    // },
    // password: {
    //     type: String,
    //     required: true,
    // },
    admin: {
        type: Boolean,
        default: false,
    }
});

User.plugin(passportLocalMongoose);

module.exports = mongoose.model('User', User);

मेरा प्रमाणीकरण

var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
var User = require('./models/user');

exports.local = passport.use(new LocalStrategy(User.authenticate()));
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());

मेरा मार्ग

router.post('/signup', (req, res, next) => {
  // User.findOne({ username: req.body.username })
  User.register(new User({ username: req.body.username }, req.body.password, (err, user) => {
    if (err) {
      console.log(err);
      res.statusCode = 500;
      res.setHeader('Content-Type', 'application/json');
      res.json({ err: err });
    } else {
      console.log(user);
      passport.authenticate('local')(req, res, () => {
        res.statusCode = 200;
        res.setHeader('Content-Type', 'application/json');
        res.json({ success: true, status: 'Registration Successful' });
      });
    }
  })); // passport-local-mongoose
});

मेरा ऐप.जेएस

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

app.use('/', indexRouter);
app.use('/users', usersRouter);

function auth(req, res, next) {
  if (!req.user) { // auto loaded by passport
    var err = new Error('You are not authenticated!!!');
    err.status = 401;
    return next(err);
  } else {
    next();
  }
}

app.use(auth);

मेरा डाकिया यहां छवि विवरण दर्ज करें

0
Nithin Sai 12 सितंबर 2020, 17:48

1 उत्तर

सबसे बढ़िया उत्तर

हल किया! यह राउटर में एक बेवकूफ टाइपो था! उपयोगकर्ता ऑब्जेक्ट को बंद करने और फिर पासवर्ड को पैरामीटर के रूप में पास करने के बजाय, मैं उपयोगकर्ता ऑब्जेक्ट को बंद करना भूल गया!

0
Nithin Sai 13 सितंबर 2020, 13:27