【问题标题】:Express.js req.session variable not storing session variables through different routesExpress.js req.session 变量不通过不同的路由存储会话变量
【发布时间】:2013-11-24 15:17:19
【问题描述】:

无法访问 sreq.session variable。我将req.session.username 设置为someVariable 但我得到了 不明确的。以下 Express 设置是否允许我访问每条路由中的 req.session 变量?

app = express.createServer(
    express.logger(),
    express.cookieParser(),
    express.session({ secret: 'keyboard cat' })
    )

快递网站好像是这样用的。

编辑:

这是我使用的一些其他代码:

if(result[0] != undefined && result[0].Password == req.body.user.pass){
    console.log("login successfull");

    //Setting in the cookies some variable useful later
    req.session.userAuthenticated = true;
    req.session.username = result[0].Username;
    req.session.projects = result[0].Projects;

这是/login 路由的一部分。在这一部分中,我检查用户是否正确输入了密码以及他是否已注册。如果我执行console.log(req.session.username),我会得到登录用户的正确用户名。

在另一条路线上,称之为/wathever 我在这样的数据库检索后进行检查

if(projects[i].name == projectName && projects[i].username == req.session.username){

projectName 是我从用户那里收到的POST 的内容,它有效,内容正确,但如果我检查req.session.username,我会收到undefined。似乎会话变量不包含我在上一条路线中放入的内容...

谢谢

【问题讨论】:

  • 您可能在路线中做错了什么,但不存在。你能粘贴更多代码吗?
  • 完成了,很抱歉没有从头开始。
  • 我有同样的问题,你能告诉我是什么问题吗?

标签: session node.js express


【解决方案1】:

确保result[0].Username && result[0].Projects 没有未定义。

您的代码中还有另一个问题,您不检查 req.body.userreq.body.user.pass 是否未定义。例如,我可以使用参数“test=ok”向您的网站发出发布请求,因此如果没有这些变量,它会显示一个内部错误页面。

【讨论】:

  • 第一点我确定他们不是:)。我检查了它们......虽然第二点,你是对的,但它仍然不能真正解决问题......无论如何谢谢:)
  • 我只能猜测问题出在哪里,我需要整个代码才能准确地看到你做错了什么(因为我在显示的这些小 sn-ps 代码中看不到真正的问题)。
猜你喜欢
  • 2012-06-09
  • 2012-11-19
  • 2022-11-20
  • 2019-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-07
相关资源
最近更新 更多