Passport.JS创建用户而不进行身份验证

时间:2019-06-10 21:13:43

标签: mongodb express passport.js

在我的应用中,只有当前管理员才能创建新用户。这可以按预期工作,但是当管理员创建用户时,该管理员将登录到新创建的帐户中。 这是我的路线:

app.post('/adduser', isAdmin, passport.authenticate('local-signup', {
successRedirect : '/admin', 
failureRedirect : '/adduser', an error
failureFlash : true 
}));

这是我的本地注册策略:

 passport.use('local-signup', new LocalStrategy({
    // by default, local strategy uses username and password, we will override with email
    usernameField : 'username',
    passwordField : 'password',
    passReqToCallback : true // allows us to pass in the req from our route (lets us check if a user is logged in or not)
},
function(req, username, password, done) {
    if (username)
        username = username.toLowerCase(); 

    // asynchronous
    process.nextTick(function() {

            User.findOne({ 'local.username' :  username }, function(err, user) {
                // if there are any errors, return the error
                if (err) {
                    return done(err);
                }


                // check to see if theres already a user with that email
                if (user) {
                    return done(null, false, req.flash('signupMessage', 'That username is already taken.'));
                }

                    // create the user
                    var newUser            = new User();

                    newUser.local.username    = username;
                    newUser.local.password = newUser.generateHash(password);

                    newUser.save(function(err) {

                        if (err) {
                            return done(err);
                        }

                        return done(null, newUser);
                    });

            });

这是因为我在定义路线时是否使用了password.authenticate()?如何在不进行身份验证的情况下创建用户。我是否可以不使用password.js来直接与mongodb进行交互?

0 个答案:

没有答案