微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

node.js – Nodejs Passport:如何添加更多用户信息

我是Nodejs的新手并且正在寻找用户凭据管理,我发现Passport是个不错的选择.

但在Passport的注册策略中,我只看到保存的用户信息是电子邮件和密码.

我需要更多用户信息,如全名,工作,注册时间,上次活动时间等.

那么我怎样才能在Passport中做到这一点?

解决方法

在您的Passport.js注册/注册策略中,您应该能够将请求对象作为该函数的第一个参数传递,Passport将负责将您的请求传递给您的函数.

因此,您应该能够使用req.body对象,以这种方式从表单中获取数据并将其存储到数据库中.

下面是一个如何工作的更详细的例子.

passport.use('signup',new LocalStrategy({
    passReqToCallback : true
  },function(req,username,password,done) {
    findOrcreateuser = function(){
      // find a user in Mongo with provided username
      User.findOne({'username':username},function(err,user) {
        // In case of any error return
        if (err){
          console.log('Error in Signup: ' + err);
          return done(err);
        }
        // already exists
        if (user) {
          console.log('User already exists');
          return done(null,false,req.flash('message','User Already Exists'));
        } else {
          // if there is no user with that email
          // create the user
          var newUser = new User();
          // set the user's local credentials
          newUser.username = username;
          newUser.password = createHash(password);
          newUser.firstName = req.body.firstName;
          newUser.lastName = req.body.lastName;

          // save the user
          newUser.save(function(err) {
            if (err){
              console.log('Error in Saving user: '+err);  
              throw err;  
            }
            console.log('User Registration succesful');    
            return done(null,newUser);
          });
        }
      });
    };

    // Delay the execution of findOrcreateuser and execute 
    // the method in the next tick of the event loop
    process.nextTick(findOrcreateuser);
  });
);

这是一个tutorial,它更详细地介绍了它.我确实将params中的firstName和lastName参数更改为正文中的变量.但您可以使用params或body将这些数据导入您的本地策略.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐