Невозможно получить данные из req.user, используя express и паспорт. js - PullRequest
0 голосов
/ 14 апреля 2020

Функция аутентификации имени пользователя и пароля с помощью

Функция, которую я использую req.user в

Шаблон e js, в который я передаю данные.

сообщение об ошибке в браузере.

функция, с которой я регистрирую пользователя .

Я сделал простой сайт аутентификации пользователей. Я хочу показать имя пользователя на странице после успешного входа в систему. Я аутентифицирую пользователя, а затем хочу передать имя пользователя через e js. Но req.user не передает никаких данных. Я относительно новичок в технологии. Я написал app.use() функции в правильном порядке. Тем не менее я не могу получить данные через req.user. Ниже показано сообщение об ошибке, отображаемое в браузере при запуске приложения на localhost. пожалуйста помоги.

//jshint esversion:6

const express=require("express");
const bodyParser=require("body-parser");
const mongoose=require("mongoose");
const session = require('express-session');
const passport = require("passport");
const passportLocalMongoose = require("passport-local-mongoose");
const app = express();
app.use(express.static("public"));
app.set('view engine','ejs');
app.use(bodyParser.urlencoded({extended:true}));

app.use(session({
  secret: "secret",
  resave: false,
  saveUninitialized: false
}));

app.use(passport.initialize());
app.use(passport.session());



mongoose.connect("mongodb://localhost:27017/flidDB");
mongoose.set("useCreateIndex", true);

const userSchema =new mongoose.Schema
(
  {
    firstName: String,
    lastName: String,
    Proffesion: String,
    stateOfResidence: String,
    mobileNumber: Number,
    username: String,
    Password: String,
    cityOfResidence: String
  }
);

userSchema.plugin(passportLocalMongoose);

const User = new mongoose.model("User",userSchema);

passport.use(User.createStrategy());

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

passport.deserializeUser(function(id, done) {
  User.findById(id, function(err, user) {
    done(err, user);
  });
});


app.get("/",function(req,res)
{
    res.sendFile(__dirname+"/index.html");
}
);
app.get("/login",function(req,res)
{
    if(req.user)
      {
          console.log(req.user);
          res.render("loginHome",{User: req.user.firstName});
      }
    else {
      res.render("login");
    }
}
);
app.get("/:topic",function(req,res)
{
    res.render(req.params.topic);
}
);

app.get("/loginHome",function(req,res)
{
    if(req.isAuthenticated()) {
      res.render("loginHome");
    } else {
      res.render("login",{User: req.user.firstName});
    }
}
);

app.post("/createaccount",function(req,res)
{
  User.register({firstName: req.body.firstName,
                 lastName: req.body.lastName,
                 Profession: req.body.Profession,
                 stateOfResidence: req.body.stateOfResidence,
                 mobileNumber: req.body.mobileNumber,
                 username:req.body.username,
                 cityOfResidence:req.body.cityOfResidence},req.body.password,function(err,user) {
                   if (err) {
                     console.log(err);
                   } else {
                     passport.authenticate("local")(req, res, function(){
                       res.redirect("/loginHome");
                     });
                   }
                 });

               });

app.post("/login",function(req,res)
{
  const user = new User({
    username: req.body.username,
    password: req.body.password
  });
  req.login(user, function(err){
    if (err) {
      console.log(err);
    } else {
      passport.authenticate("local")(req, res, function(){
        res.redirect("/loginHome");
      });
    }
  });
});



app.post("/",function(req,res)
{
  res.sendFile(__dirname+"/index.html");
});
app.post("/signup",function(req,res)
{
  res.render("signup");
});
app.listen(3000,function()
{
    console.log("server has started successfully!");
}
);
...