简体   繁体   English

如何将属性设置为req.session

[英]How to set property to req.session

I am newby in node.js and sessions and I have problem is setting properties to sesssion ! 我在node.js和会话中是newby,但我有问题将属性设置为sesssion! I try to add property to session and save it in db but I get error 我尝试将属性添加到会话并将其保存在数据库中,但出现错误

here is my codes : app.js : ( main js file ) 这是我的代码:app.js :(主要js文件)

const store = new MongoDBStore({
    uri : 'mongodb://127.0.0.1:27017/OnLineShop',
    collection : 'session'
})

// routes :
app.use(shopRoutes)
app.use('/admin', adminRoutes)
app.use(authroutes)


// session : 
app.use(session(
    {
        secret : 'secret key' , 
        resave : false , 
        saveUninitialized : false , 
        store : store
    }
))

and here is my authentication handler I named it auth.js : 这是我的身份验证处理程序,我将其命名为auth.js:

 // rout handler for post login requst : 
    module.exports.postLogin = (req , res)=>{
        // session : 
        req.session.isLoggedIn = true 
        res.redirect('/')
    }

after I lunch this app and want to login this error appear : 在我吃完这个程序并想登录后出现此错误:

TypeError: Cannot set property 'isLoggedIn' of undefined
    at module.exports.postLogin (/home/sadra/Desktop/projects/web/javascript/shop-app/controllers/auth.js:15:28)
    at Layer.handle [as handle_request] (/home/sadra/Desktop/projects/web/javascript/shop-app/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/sadra/Desktop/projects/web/javascript/shop-app/node_modules/express/lib/router/route.js:137:13)
    at Route.dispatch (/home/sadra/Desktop/projects/web/javascript/shop-app/node_modules/express/lib/router/route.js:112:3)
    at Layer.handle [as handle_request] (/home/sadra/Desktop/projects/web/javascript/shop-app/node_modules/express/lib/router/layer.js:95:5)
    at /home/sadra/Desktop/projects/web/javascript/nodejs_frontCast/shop-app/node_modules/express/lib/router/index.js:281:22
    at Function.process_params (/home/sadra/Desktop/projects/web/javascript/shop-app/node_modules/express/lib/router/index.js:335:12)
    at next (/home/sadra/Desktop/projects/web/javascript/shop-app/node_modules/express/lib/router/index.js:275:10)
    at Function.handle (/home/sadra/Desktop/projects/web/javascript/shop-app/node_modules/express/lib/router/index.js:174:3)
    at router (/home/sadra/Desktop/projects/web/javascript/shop-app/node_modules/express/lib/router/index.js:47:12)
    at Layer.handle [as handle_request] (/home/sadra/Desktop/projects/web/javascript/shop-app/node_modules/express/lib/router/layer.js:95:5)
    at trim_prefix (/home/sadra/Desktop/projects/web/javascript/nodejs_frontCast/shop-app/node_modules/express/lib/router/index.js:317:13)
    at /home/sadra/Desktop/projects/web/javascript/shop-app/node_modules/express/lib/router/index.js:284:7
    at Function.process_params (/home/sadra/Desktop/projects/web/javascript/shop-app/node_modules/express/lib/router/index.js:335:12)
    at next (/home/sadra/Desktop/projects/web/javascript/shop-app/node_modules/express/lib/router/index.js:275:10)
    at /home/sadra/Desktop/projects/web/javascript/shop-app/node_modules/express/lib/router/index.js:635:15

I don`t know how we can set property for session in right way ! 我不知道如何以正确的方式设置会话的属性!

To resolve the issue please change the order of your code from, 要解决此问题,请更改以下代码的顺序:

// routes :
app.use(shopRoutes)
app.use('/admin', adminRoutes)
app.use(authroutes)


// session : 
app.use(session(
    {
        secret : 'secret key' , 
        resave : false , 
        saveUninitialized : false , 
        store : strore
    }
))

to

// session : 
app.use(session(
    {
        secret : 'secret key' , 
        resave : false , 
        saveUninitialized : false , 
        store : strore
    }
))

// routes :
app.use(shopRoutes)
app.use('/admin', adminRoutes)
app.use(authroutes)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM