2017-10-13 3 views
-1

みんな。私はこの問題を抱えていました。私がログインすると、ログインできなくなりました。はい、私はexpress-sessionモジュールを持っており、エラーなしでセットアップしています。私がすでにログインしているときにログオンする必要がある何かをしようとすると、ログインページ(私はそれをプログラムしました)に私を連れてきます。皆さんのご協力をありがとうございます。申し訳ありませんが、これはばかな質問です(私はそうは思わない)。ありがとうございました。Node.JS Passportログインしていない。

あなたは2つの物事を更新する必要が
let express = require("express"), 
    app = express(), 
    bodyParser = require("body-parser"), 
    methodOV = require("method-override"), 
    mongoose = require("mongoose"), 
    passport = require("passport"), 
    pL = require("passport-local"), 
    pLM = require("passport-local-mongoose"), 
    User = require("./user.js"); 

mongoose.connect("mongodb://localhost/max"); 

let maxBlog = new mongoose.Schema({ 
    title: String, 
    author: String, 
    content: String 
}); 

let Blog = mongoose.model('Blog', maxBlog); 

Blog.create({ 
    title: "Test", 
    author: "Test", 
    content: "Test" 
}); 

app.use(express.static("public")); 

app.use(bodyParser.urlencoded({ extended: false })) 

app.use(bodyParser.json()); 

app.use(methodOV("_method")); 

app.set('view engine', 'ejs'); 

//AUTH 

app.use(passport.initialize()); 
app.use(passport.session()); 
passport.use(new pL(User.authenticate())); 
passport.serializeUser(User.serializeUser()); 
passport.deserializeUser(User.deserializeUser()); 
app.use(require("express-session")({ 
    secret: "Rusty is the best and cutest dog in the world", 
    resave: false, 
    saveUninitialized: false 
})); 

app.get("/register",(req,res) => { 
    res.render("register") 
}); 

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

// LOGIN ROUTES 
app.get("/login", (req, res) =>{ 
    res.render("login"); 
}); 
//login logic 
app.post("/login", passport.authenticate("local", { 
    successRedirect: "/", 
    failureRedirect: "/login" 
}) ,(req, res) =>{ 
}); 

app.get("/logout", (req, res) => { 
    req.logout(); 
    res.redirect("/"); 
}); 


const isLoggedIn = (req, res, next) =>{ 
    if(req.isAuthenticated()){ 
     return next(); 
    } else { 
     res.redirect("/login"); 
    } 
}; 

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 

app.get("/", (req,res) => { 
    res.redirect("/home"); 
}); 

app.get("/home", (req,res) => { 
    res.render("index"); 
}); 

app.get("/blog", (req,res) => { 
    Blog.find({},(err,blog) => { 
     if (err){ 
      res.send("An unexpected error occured. Please try again later."); 
     } else { 
      res.render("blog",{blogs:blog}); 
     } 
    }); 
}); 

app.post("/blog",isLoggedIn,(req,res) => { 
    Blog.create({ 
     title: req.body.t, 
     author: req.body.a, 
     content: req.body.c 
    }), (err,create) => { 
     if (err){ 
      res.send("There was an error. Try again later."); 
     } else { 
      res.render("blogs"); 
     } 
    }; 
}); 

app.get("/blogs/:id",(req,res) => { 
    Blog.findById(req.params.id,(err,find) => { 
     if (err){ 
      res.send("An error occured. Please try again later."); 
     } else { 
      res.render("show",{blog:find,isLoggedIn:isLoggedIn}); 
     } 
    }); 
}); 

app.put("/blogs/:id/edit",isLoggedIn,(req,res) => { 
    Blog.findByIdAndUpdate(req.params.id,({ 
     title: req.body.t, 
     content: req.body.c, 
     author: req.body.a 
    }),(err,update) => { 
     if (err){ 
      res.send("An error occured. Please try again later."); 
     } else { 
      res.redirect("/blogs"+req.params.id); 
     } 
    }); 
}); 

app.delete("/blogs/:id",isLoggedIn,(req,res) => { 
    Blogs.findByIdAndRemove(req.params.id,(err,result) => { 
     if(err){ 
      res.send("Sorry. There was an error please try again later."); 
     } else { 
      res.redirect("/blogs"); 
     } 
    }); 
}); 

app.listen(8080); 

答えて

0

1-あなたはセッションクッキー

のMAXAGEを設定する必要がパスポートの初期化の前に

2-セッションミドルウェアを追加することを検討だから、これを置き換えます部:

app.use(require("express-session")({ 
    secret: "Rusty is the best and cutest dog in the world", 
    resave: false, 
    saveUninitialized: false, 
    cookie: { 
     secure: false, 
     maxAge: 3600000 //1 hour 
    } 
})); 

app.use(passport.initialize()); 
app.use(passport.session()); 
passport.use(new pL(User.authenticate())); 
passport.serializeUser(User.serializeUser()); 
passport.deserializeUser(User.deserializeUser()); 
関連する問題