Nodejs + Passport + MongoDB

时间:2017-03-23 10:11:13

标签: node.js mongodb passport.js

我是Nodejs的新手。

参考链接。 https://www.danielgynn.com/build-an-authentication-app-using-express-node-passport/

登录我的个人资料后。 我需要使用auth level访问& read& write数据。

如管理员,用户。之后读取和写入数据。

请根据此链接编码建议我们。

谢谢

2 个答案:

答案 0 :(得分:0)

作者提供了一个github存储库示例:https://github.com/danielgynn/express-authentication

对于范围授权,请查看:

https://github.com/danielgynn/express-authentication/blob/14ca39753f4bd5cc7189786b184b8be36903a102/routes/index.js#L38&L52

一个例子:

router.get('/auth/google', passport.authenticate('google', { scope: ['profile', 'email'] }));

答案 1 :(得分:0)

在目录' routes'中,生成一个新的Javascript文件。它应该有类似的东西:

module.exports.findUser = function(req, res, next){
    User.findOne({ 'local.email':  req.body.email }, function(err, user) {
        if(!user){
            res.status(404).send('User with the e-mail address ' + req.body.email + ' is not found'); 
        } else {
            res.status(200).send(user);
        }
    }
}

module.exports.editUser = function(req, res, next){
    User.update({ 'local.email':  req.body.email }, req.body.newUserObject, function(err) {
        if(err){
            res.status(500).send('Something went wrong :('); 
        } else {
            res.status(200).send('User successfully updated :)');
        }
    }
}

对于editUser函数,您应该

  1. 将整个用户对象发送到newUserObject或
  2. 中的函数
  3. 使用类似:{$ set:{keyToUpdate1:​​valueToUpdate1,keyToUpdate2:valueToUpdate2}}
  4. 如果您想为用户提供角色,例如'管理员,' SectionAdmin',' RegularUser','访客'等等,你应该将它们保存在用户模式中:

    var mongoose = require('mongoose');  
    var bcrypt   = require('bcrypt-nodejs');
    
    var userSchema = mongoose.Schema({  
      local: {
        email: String,
        password: String,
        role: String
      },
    });
    
    userSchema.methods.generateHash = function(password) {  
      return bcrypt.hashSync(password, bcrypt.genSaltSync(8), null);
    };
    userSchema.methods.validPassword = function(password) {  
      return bcrypt.compareSync(password, this.local.password);
    };
    module.exports = mongoose.model('User', userSchema);
    

    并检查用户在每一步中的角色。