2017-12-20 7 views
0

내 Express 앱에서 Passport.JS, 특히 등록/로그인 성공 리디렉션에 문제가 있습니다. 사용자 이름/암호는 문제없이 DB에 저장되지만 두 경우 모두 리디렉션이 작동하지 않습니다.Passport.JS 리디렉션시 막혔습니다.

나는 익스프레스, 바디 파서, 몽구스, 여권, 여권 - 현지 및 여권 - 현지 몽구스를 사용하고 있습니다. 당신의 passp이

여권 구성

app.use(require("express-session")({ 
secret: "This is a test app", 
resave: false, 
saveUninitialized: false 
})); 
app.use(passport.initialize()); 
app.use(passport.session()); 
passport.use(new LocalStrategy(User.authenticate())); 
passport.serializeUser(User.serializeUser); 
passport.deserializeUser(User.deserializeUser); 

가입하기 경로

app.post("/register", function(req, res) { 
    var newUser = new User({username: req.body.username}); 
    User.register(newUser, req.body.password, function (err, user) { 
    if (err) { 
     console.log(err); 
     return res.render("register"); 
    } 
    passport.authenticate("local"),(req, res, function(){ 
     res.redirect("/campgrounds"); 
    }); 
    }); 
}); 

로그인 노선

app.post("/login", 
passport.authenticate("local", { 
    successRedirect: "/campgrounds", 
    failureRedirect: "/login" 
})); 

답변

0

쓰기 오트 설정 및 응용 프로그램의 변수를 너의 이름과 일치하려고

하고 경로에

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

 
    // asynchronous 
 
    process.nextTick(function() { 
 

 
    // Whether we're signing up or connecting an account, we'll need 
 
    // to know if the email address is in use. 
 
    User.findOne({'username' : usernameCB}, function(err, existingUser) { 
 

 
     // if there are any errors, return the error 
 
     if (err) 
 
      return done(err); 
 

 
     // check to see if there's already a user with that email 
 
     if (existingUser) 
 
      return done(null, false); 
 

 
     // If we're logged in, we're connecting a new account. 
 
     if(req.user) { 
 
     console.log(req.user); 
 
      var user    = req.user; 
 
      User.username = usernameCB; 
 
      User.password = user.generateHash(passwordCB); 
 
      User.save(function(err) { 
 
       if (err) 
 
        throw err; 
 
       return done(null, user); 
 
      }); 
 
     } 
 
     // We're not logged in, so we're creating a brand new user. 
 
     else { 
 
      // create the user 
 
      var User   = new User(); 
 

 
      User.username = usernameCB; 
 
      User.password = User.generateHash(passwordCB); 
 

 
      User.save(function(err) { 
 
       if (err) 
 
        throw err; 
 
       return done(null, user); 
 
      }); 
 
     }}); 
 
    }); 
 
}));

app.post('/signup',passport.authenticate('local-signup',{ 
 
     successRedirect:'/campgrounds', 
 
     failureRedirect:'/login' 
 
    }))