0

ユーザーがサインアップした後、またはユーザー名が既にデータベースに存在する場合、ユーザーをリダイレクトしようとしていますが、機能は正常に機能しますが、リダイレクトできず、次に何をすべきか完全に混乱しています。

ここに私のパスポートファイルがあります

var LocalStrategy   = require('passport-local').Strategy;
var User            = require('./models/user');

module.exports = function(passport) {

    passport.serializeUser(function(user, done) {
        done(null, user);
    });

    // used to deserialize the user
    passport.deserializeUser(function(user, done) {
            done(null, user);

    });


    passport.use('local-signup', new LocalStrategy({
        // by default, local strategy uses username and password, we will override with email
        usernameField : 'email',
        passwordField : 'password',
        passReqToCallback : true // allows us to pass back the entire request to the callback
    },

    function(req, email, password, done) {

        // asynchronous
        // User.findOne wont fire unless data is sent back


        process.nextTick(function() {

        // find a user whose email is the same as the forms email
        // we are checking to see if the user trying to login already exists
        User.findOne({ 'email' :  email }, function(err, user) {
            // if there are any errors, return the error
             if (err) {
                        return done(err);
                      }
             if(user) {
                  if(user.validPassword(password)) {

                     return done(null, user);

                  } else {

                     return done(null, true, req.flash('signupMessage', 'That email is already in DB.'));
                  }
             } else {

                 var newUser    = new User();

                        newUser.email    = email;
                        newUser.password = newUser.generateHash(password);

                        newUser.save(function(err) {
                            if (err)
                                return done(err);

                            return done(null, newUser);
                       });



             }          


        });    

        });

    }));

}    

そして私のルート

app.post('/signup',passport.authenticate('local-signup', {
                                  successRedirect : '/timeslot', // redirect to the secure profile section
                                  failureRedirect : '/', // redirect back to the signup page if there is an error
                                  failureFlash : true // allow flash messages
                              }));

私もやってみました

app.post('/signup',function(req, res, next) {
  passport.authenticate('local-signup', function(err, user, info) {        
    if (user) { 
      res.redirect('/timeslot'); 
    }    
    else res.redirect('/'); 

  })(req, res, next);
});

しかし、まったく機能していません。私はこれを修正するために必死ですが、方法がわかりません。

4

1 に答える 1

0

パスポートのリダイレクトで同じ問題に遭遇しました。だから私のコードはちょうど同じように働き始めました

app.get("/auth/facebook/callback", passport.authenticate("facebook", { failureRedirect: config.loginPage }), function(req,res) {
    res.redirect(config.redirectAfterLogin);
});
于 2014-11-28T10:22:34.760 に答える