Express.js req.sessionvariables不通过不同的路由存储会话variables
无法req.session variable
。 我将req.session.username
设置为someVariable
但是我没有定义。 下面的Express设置是否允许我访问每个路由中的req.sessionvariables?
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
路线的一部分。 在这部分我检查用户是否正确地input了密码,并且是否已经注册。 如果我做一个console.log(req.session.username)
我得到login用户的正确用户名。
在另一个路由中,像这样调用它/wathever
我检查一个数据库
if(projects[i].name == projectName && projects[i].username == req.session.username){
projectName
是我从用户接收作为POST
东西,它的工作原理,它有正确的内容,但如果我检查req.session.username
我收到undefined
。 看来会话variables不包含我在之前的路线里面放的东西…
谢谢
确保result[0].Username
&& result[0].Projects
。项目不是未定义的。
另外你的代码还有另一个问题,你不检查req.body.user
和req.body.user.pass
是否是未定义的。 例如,我可以用params“test = ok”向你的站点发送一个post请求,所以没有这些variables,它会显示一个Internal Error页面。