【问题标题】:not able to access the loggedIn value of express.session in node js无法访问节点 js 中 express.session 的 loggedIn 值
【发布时间】:2020-11-15 22:55:05
【问题描述】:

我在 nodejs 的帮助下创建了一个网络应用程序。我正在使用 sequelize 作为 mysql 的 ORM。 现在我已经在表达式会话的帮助下实现了登录功能。但是,每当我尝试在不同的路由中访问时,loggedIn 参数都会返回 undefined。

我的 AppJs 文件:

const path=require('path');
const express=require('express');
const app=express();
const bodyParser = require('body-parser');
const session= require('express-session');
const sequelize= require('./util/database');
var SequelizeStore = require('connect-session-sequelize')(session.Store);
const myStore=new SequelizeStore({
    db: sequelize,
  })
app.use(session({secret:'my secret',  store:myStore ,resave:false,saveUninitialized:false}))


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

app.set('views', 'views');


const movieroutes=require('./routes/movies');
const personroutes=require('./routes/persons');
const testroutes=require('./routes/test');
const authroutes=require('./routes/auth');



const Movie= require('./models/movie');
const Moviegenre=require('./models/moviegenre');
const Person=require('./models/person');
const Personrole=require('./models/personrole');
const Personmovierole=require('./models/personmovierole');

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

app.use(express.static(path.join(__dirname, 'public')));
app.use("/",movieroutes);
app.use("/",personroutes);
app.use("/",testroutes);
app.use("/",authroutes);


var port=3000||process.env.PORT
app.listen(port,function(){
   console.log("the server has started");
})
app.use("/",function(req,res){
    res.sendFile(path.join(__dirname,'./','views','home.html'));
})

Person.belongsToMany(Movie,{through:Personmovierole,unique:false});
Movie.belongsToMany(Person,{through:Personmovierole,unique:false});
Person.belongsToMany(Personrole,{through:Personmovierole,unique:false});
Personrole.belongsToMany(Person,{through:Personmovierole,unique:false});
Movie.belongsToMany(Personrole,{through:Personmovierole,unique:false});
Personrole.belongsToMany(Movie,{through:Personmovierole,unique:false});


myStore.sync();
sequelize.
sync().
then(result=>{
    console.log(`sync done`);
})
.catch(err=>{
    console.log(err);
})

我的身份验证控制器:

exports.getLogin= (req,res,next)=>
{
  
    res.render('auth/login',{
       isAuthenticated:false
       
    })

}


exports.postLogin= (req,res,next)=>

{
    req.session.isLoggedIn=true;
    console.log(req.session.isLoggedIn);
    req.session.save(err=>{
        console.log(err);
        res.redirect('/');
        
    })
  

}

exports.postLogout= (req,res,next)=>

{ 
    req.session.destroy(err=> {
        console.log(err);
        res.redirect('/');
    });



}

我的电影控制器:

exports.getAllMovies=(req,res,next)=>{
    Movie.findAll()
    .then(movies=>{
      console.log(req.session);
      console.log(req.session.IsLoggedIn);
        res.render('movies',{
            movies:movies,
            isAuthenticated:req.session.IsLoggedIn
            
        });
    })
    .catch(err=>{
        console.log(err);
    });

    
};

正如您在影片控制器中看到的那样。我插入了两个 console.log 值。

console.log(req.session) 返回:

Session { cookie: { path: '/', _expires:null,originalMaxAge:null,httpOnly: true }, isLoggedIn: true}

但是console.log(req.session.IsLoggedIn) 返回:

undefined

请帮忙

【问题讨论】:

    标签: javascript node.js express session sequelize.js


    【解决方案1】:

    你有一个错字:isLoggedIn 不是IsLoggedIn

    req.session.Session(isLoggedIn)

    Session { cookie: { path: '/', _expires: null, originalMaxAgenull,httpOnly:true}, isLoggedIn: true }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-07
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 2021-11-07
      相关资源
      最近更新 更多