Estoy tratando de obtener el usuario conectado actual en mi aplicación Express y Mongoose. Lo he autenticado con el pasaporte pero no puedo obtener el nombre de usuario actual. He intentado llamarlo desde el modelo pero me devuelve un valor nulo, alguien me puede ayudar con esto? Gracias.
modelos/Usuario.js
const mongoose = require("mongoose"); const passportLocalMongoose = require("passport-local-mongoose"); const UserSchema = new mongoose.Schema({ username:String, password:String }) ; UserSchema.plugin(passportLocalMongoose); module.exports = mongoose.model("User",UserSchema);aplicación.js
const express = require('express'), app = express(), mongoose = require("mongoose"), passport = require("passport"), bodyParser = require("body-parser"), LocalStrategy = require("passport-local"), passportLocalMongoose = require("passport-local-mongoose"), User = require("./models/user"); //Connecting database mongoose.connect("mongodb://localhost/auth_demo"); app.use(require("express-session")({ secret:"Any normal Word", //decode or encode session resave: false, saveUninitialized:false })); passport.serializeUser(User.serializeUser()); //session encoding passport.deserializeUser(User.deserializeUser()); //session decoding passport.use(new LocalStrategy(User.authenticate())); app.set("view engine","ejs"); app.use(bodyParser.urlencoded( { extended:true } )) app.use(passport.initialize()); app.use(passport.session()); ... app.get("/userprofile",isLoggedIn ,(req,res) =>{ res.render("userprofile", {name: User.username}); }) ... app.listen(process.env.PORT ||3000,function (err) { if(err){ console.log(err); }else { console.log("Server Started At Port 3000"); } });perfil de usuario.ejs
<h1> User Profile </h1> <p> <%= name %> After Login the user will reach here. </p> <ul> <li><a href="/">Home</a></li> <li><a href="/logout">Logout</a></li> </ul>