Ich habe Passjs und Passport-local-mongoose für die Benutzeranmeldung verwendet. Dies ist mein CodeSchlechte Anfrage in Nodejs
var express =require("express"),
app =express(),
bodyParser =require("body-parser"),
passport =require("passport"),
LocalStrategy =require("passport-local"),
User =require("./models/user"),
mongoose =require("mongoose"),
exphbs =require("express-handlebars");
mongoose.connect("mongodb://localhost/lone");
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended:true}));
var hbs = exphbs.create({
defaultLayout: 'main',
partialsDir: [
'views/partials/'
]
});
app.use(express.static(__dirname +"/public"))
app.engine('handlebars', hbs.engine);
app.set("view engine", "handlebars");
app.use(require("express-session")({
secret:"You are beautiful",
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.use(function (req,res,next) {
res.locals.currentUser=req.user;
next();
});
//Auth Routes
app.get("/signup",function(req,res){
res.render("signup");
});
app.get("/",function(req,res){
res.render("home");
});
app.post("/signup",function(req,res,next){
var newUser= new User({username: req.body.userName,name:req.body.firstName,email:req.body.email});
User.register(newUser, req.body.password, function(err,user){
if (err){
console.log(err);
res.redirect("/login")
return next();
}
passport.authenticate("local")(req,res,function(){
res.redirect("/");
return next();
});
})
});
app.get("/login",function(req,res){
res.render("login");
});
app.get("/logout",function(req,res){
req.logout();
res.redirect("/");
});
app.get("/",function (req,res) {
res.render("home");
});
app.listen(3000,function(){
console.log("started");
});
Wenn ich die Registrierung Taste auf Senden klicken ich eine Fehlermeldung erhalten, die schlecht Anfrage sagt. und dies ist die Botschaft, die ich in meiner Konsole bekommen {[UserExistsError: Ein Benutzer mit dem angegebenen Benutzernamen ist bereits registriert] Name: ‚UserExistsError‘, Meldung: ‚Ein Benutzer mit dem angegebenen Benutzernamen ist bereits registriert‘}
Wahrscheinlich nicht verwandt mit Ihrem Fehler, aber rufen Sie nicht 'next()' nach 'res.redirect()'. Sobald Sie die Antwort gesendet haben, rufen Sie 'next()' nicht auf, weil Sie nicht möchten, dass andere Handler diese Anfrage sehen. – jfriend00
... existiert der Benutzer bereits in Ihrer Datenbank? –
Nein, der Benutzer existiert nicht. Aber ich denke, das Problem ist mit der Registermethode. Wenn ich das Programm starte, wird es in der Registermethode zweimal durchlaufen. –