2017-12-20 5 views
0

Ich habe Probleme mit Passport.JS innerhalb meiner Express-App, genauer gesagt die erfolgreiche Weiterleitung für die Registrierung/Anmeldung. Der Benutzername/das Passwort wird im DB ohne Probleme gespeichert, aber die Umleitung in beiden Fällen funktioniert nicht.Passport.JS bei Umleiten fest

Ich benutze: Express, Body-Parser, Mongoose, Reisepass, Passport-local und Passport-local-mongoose.

Passport Config

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); 

Anmelden Strecke

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"); 
    }); 
    }); 
}); 

Anmeldung Strecke

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

Antwort

0

schreiben in Ihrem passp diese ort Config und versuchen Variablen Namen zu Ihnen in Ihrer Anwendung

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); 
 
      }); 
 
     }}); 
 
    }); 
 
}));

und in die Routenberechnung

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

übereinstimmen
Verwandte Themen