我是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 举报,一经查实,本站将立刻删除。