2017-06-14 121 views
0

在我sails.js应用我是第一个请求我隐瞒这条线req.session.userId="hello";Sails.js会话刷新

console.log(req.session.userId)返回后后建立的会话这样

req.session.userId="hello"; 
    console.log(req.session.userId); 

undefined

回答

1

坚韧而没有看到更多的控制器代码,但是您正在设置的会话属性仅在完成控制器操作后才会被处理到会话中 - 例如返回一个视图或JSON。

尝试:

if(req.session && req.session.userId){ 
    //This user has an active session already so we have a userid 
    sails.log.info(req.session.userId); 
else{ 
    //Must be the first time this action was executed 
    req.session.userId = 'hello'; 
} 
res.view('index'); 

其中index为您EJS视图的名称。如果你永远不会返回任何东西,那么会话属性从不设置。

+0

感谢您的回答,这是我在我的控制器上试过的第一页加载我已经与'req.session.userId ='hello'设置了会话;'它将访问同一控制器中的另一个方法' concole.log(req.session.userId)'但我得到了undefind错误 – Jabaa

+1

是的,你不能在同一个动作中设置和获取会话属性'userId'。如果你没有从控制器动作返回,那么req.session.userId永远不会被设置。所以你需要1)检查req.session和req.session.userId 2)如果没有设置,继续设置它,如果已经设置,然后将其打印到控制台3)通过返回视图或json来完成请求。然后,当您刷新页面时,代码会重复执行,并会从先前执行的控制器操作中找到userId。希望有所帮助。 –

+0

服务器重新启动会话时还有一个问题未定义为什么会发生? – Jabaa