簡體   English   中英

在passportjs中處理名字和姓氏

[英]Handling firstname and lastname in passportjs

我想知道在passportjs中處理用戶的名字姓氏,知道我嘗試了以下代碼:

passport.use('local-register', new passportLocal (strategyOption, function (email, password, firstname, lastname, callback) {
    console.log(' ------- pass :' + password);
            console.log(' ------- email :' + email);
    console.log(' ------- fname :' + firstname);
    console.log(' ------- lname :' + lastname);


    var searchedUser = {
        email: email
    };
    User.findOne(searchedUser, function (err, user) {
        if (err) return callback (err);
        //console.log(user);
        if (user) return callback (null, false, {
           message: 'User do exist!'
        });

        var newUser = new User({
            firstname: firstname,
            lastname: lastname,
            email: email,
            password: password
        });
        newUser.save(function (err) {
            if(err) console.log('hi');
            callback (null, newUser);
        });
    });
}));

但在控制台中我得到了以下內容:

---- p: pass(密碼給定) ---- email: email... ---- fname: - 這里我有一個奇怪的東西 -

------- fname :function verified(err, user, info) {
if (err) { return self.error(err); }
if (!user) { return self.fail(info); }
self.success(user, info);

} ------- lname:undefined

最糟糕的是:未知回調......所以節點無法處理回調,當我刪除 fname 和 lname 參數時......一切都像魅力一樣工作,所以有人知道如何處理護照中的 fname 和 lname 嗎?

謝謝,

以下代碼對我有用:

護照配置:

passport.use('local-signup', new localStrategy({
  usernameField: 'email',
  passwordField: 'password'
},
  async (email, password, done) => {
    try {const user = await UserModel.create({
        email, password
      })
      console.log(`Welcome!`)
      return done(null, user);
      }
     catch (error) {
      console.log(`Signup error: ${error}`)
      done(error)
      }
  }));

節點js路由:

router.post(
  '/signup',
  function (req, res, next){ passport.authenticate('local-signup', { session: false }, async function (err, user, info) {
        try {
          await UserModel.findOneAndUpdate({email: req.body.email}, { firstName: req.body.firstName, lastName: req.body.lastName }, 
{new: true});

          await req.login(
            user, { session: false },
            (err) => {
              if (err) {
                return next(err);
              }

              const payload = {
     id: user._id, email: user.email
              };
              const token = jwt.sign(
                payload,
                process.env.JWT_TOKEN_SECRET);
              console.log('JWT signed.');
              res.status(200).json({
      success: true,
      token: `Bearer ${token}`,
      user: {
        id: user.id,
        email: user.email,
        firstName: user.firstName,
        lastName: user.lastName
      }
    });
            });
        } catch (err) {
          console.log('Passport Signup err: ' + err)
          res.send('Sign up error: ' + err)
          return next(err);
        }
      }
    )(req, res, next)
  })

簡而言之,我在注冊路徑中使用了“Model.findOneAndUpdate”來用他們的名字和姓氏更新用戶的文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM