【发布时间】:2019-01-11 04:59:14
【问题描述】:
我在我的项目中使用 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)
任何帮助表示赞赏..!
【问题讨论】:
-
在这部分之前的某个地方,您已经将某物发送到标题,如“发送后无法设置标题”。因此,在调用这部分之前,如果不知道脚本是什么样子,就很难判断。
-
我只是使用简单的脚本,如果用户在浏览器中运行每个 url,我需要检查会话中的用户是否?所以我正在使用 app.use 中间件,如果用户不在会话中意味着我会将用户重定向到索引页面,该代码是 app.get("/",(req,res)=>{ res.render("index") });