V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
keys
V2EX  ›  Node.js

Node.js问题——req.session.user 与浏览器刷新

  •  
  •   keys · 2012-10-26 15:20:44 +08:00 · 5225 次点击
    这是一个创建于 4400 天前的主题,其中的信息可能已经有所发展或是发生改变。
    ‘/:user' 是用户界面
    ’/‘是主界面
    ‘/login’是登入界面
    ‘/reg'是注册界面
    用户界面从注册界面或者登入界面通过res,redirect(’/‘)来抵达的,
    用户界面用if(req.session.user)来判断是否登入,
    成功登入后能来到用户界面,但是在用户界面刷新之后req.session.user就为没有了

    问题:
    1.如何解决
    2.req到底是什么,怎么工作的
    3 条回复    1970-01-01 08:00:00 +08:00
    keys
        1
    keys  
    OP
       2012-10-26 15:36:45 +08:00
    问题解决了,在if(req.session.user){req.session.user = req.session.user;......}就可以了,但是一个变量自己等于自身很奇怪,我的理解是浏览器打开一个网址会生成一个request,如果是A redirect 到B,则callback(req,res){....}里的req来自A,res,end()之后生成的新网页含有新的req,这时刷新是B to B,而B的req里面就不存在req.session.user了,而在callback(){ req.session.user = ....;}里面这样设置的req会包含在新的网页里面,所以,问题就解决了;简单的想想就是说在callback函数里面有两个req,一个属于传进来的,一个属于新页面,当你进行修改req的属性的时候,传进来的req是只读的,所以默认为修改新页面的req,而新页面的req用于新页面跳转时进行传递。

    以上是我的分析,纯粹根据结果逆向推理而得,望高手居高临下剖析原理,提出不足
    jackyz
        2
    jackyz  
       2012-10-26 16:59:38 +08:00
    嗯嗯,多啃啃 expressjs.com 就明白了。
    meteor
        3
    meteor  
       2012-11-07 10:50:24 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1047 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 18ms · UTC 20:10 · PVG 04:10 · LAX 12:10 · JFK 15:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.