Express.js req.session变量不通过不同的路由存储会话变量

时间:2011-12-11 13:46:31

标签: session node.js express

无法访问s req.session variable。我将req.session.username设置为someVariable,但我知道了 未定义。以下Express设置是否允许我访问每个路径中的req.session变量?

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

Express网站似乎以这种方式使用。

编辑:

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

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。看来会话变量不包含我在上一个路径中放入的内容......

由于

1 个答案:

答案 0 :(得分:1)

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

此外,您的代码中还有其他问题,请勿检查req.body.userreq.body.user.pass是否未定义。例如,我可以使用params" test = ok"向您的网站发布帖子请求,因此如果没有这些vars,它会显示一个内部错误页面。