Функция аутентификации имени пользователя и пароля с помощью
Функция, которую я использую 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!");
}
);