[英]How to check session data in nodejs
在我的项目中使用express-session可以正常工作,如果用户登录到我的站点意味着我将数据存储在会话中,并且注销销毁会话后也可以正常工作,如果用户运行特定的URL则注销后意味着可以将用户转到没有登录的页面,需要限制该页面,以下是我尝试过的代码
app.use((req,res,next)=>{
if(!req.session.data)
{
return res.redirect("/"); or res.redirect("/"); //Both not working
}
next();
})
这显示以下错误
Error: Can't set headers after they are sent.
at validateHeader (_http_outgoing.js:491:11)
at ServerResponse.setHeader (_http_outgoing.js:498:3)
at ServerResponse.header (/home/djaxtech/Documents/luka-asset/node-app/node_modules/express/lib/response.js:767:10)
at ServerResponse.send (/home/djaxtech/Documents/luka-asset/node-app/node_modules/express/lib/response.js:170:12)
at done (/home/djaxtech/Documents/luka-asset/node-app/node_modules/express/lib/response.js:1004:10)
at tryHandleCache (/home/djaxtech/Documents/luka-asset/node-app/node_modules/ejs/lib/ejs.js:257:5)
任何帮助表示赞赏..!
下面的代码是一个中间件:
中间件和app.use在Expressjs中实际上意味着什么?
这意味着调用next()
时,将在该行中执行另一个函数。 而且您也必须从那里发出响应。
在下面,该错误表示该响应已经发送,并且您尝试再次发送,这是不可能的。
Error: Can't set headers after they are sent.
app.use((req, res, next) => {
if (!req.session.data) {
// return res.redirect("/"); or res.redirect("/"); //use only one.
}
next();
})
req.session要存储或访问会话数据,只需使用请求属性req.session,该属性通常由商店序列化为JSON,因此嵌套对象通常很好。 例如,下面是一个特定于用户的视图计数器:
// Use the session middleware
app.use(session({ secret: 'keyboard cat', cookie: { maxAge: 60000 }}))
// Access the session as req.session
app.get('/', function(req, res, next) {
if (req.session.views) {
req.session.views++
res.setHeader('Content-Type', 'text/html')
res.write('<p>views: ' + req.session.views + '</p>')
res.write('<p>expires in: ' + (req.session.cookie.maxAge / 1000) + 's</p>')
res.end()
} else {
req.session.views = 1
res.end('welcome to the session demo. refresh!')
}
})
请尝试这个
app.use((req,res,next)=>{
if(!req.session.data)
{
return res.redirect("/"); or res.redirect("/"); //Both not working
} else {
next();
}
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.