2017-07-31 192 views
0

我是meteor.js的新手,如果我的问题不符合社区标准,我很抱歉。流失注销旧会话注销

那么,我试图创建一个简单的应用程序,并遇到用户不活动后超时的问题。

我正在使用“陈旧会话流星包”来自动超时用户在一段指定时间后不活动。它会注销用户,但不会取消设置“Meteor.user()”,我可以在流星中知道用户已经注销并调用“登录”页面的路由以重新登录。

例如,过时的会话在不活动30秒后会注销用户,然后检查返回的“Meteor.user()”值,如果过期会话超时,它应该返回undefined,它正在运行带有id和其他详细信息的完整用户对象。

我只是想强制注销用户,当过期的会话超时并显示登录屏幕。

我一直在互联网上搜索两天,但找不到任何解决方案如何做到这一点。最后,发布了这个问题。

+1

这听起来像你没有正确安装/使用过时的会话包。你怎么知道用户已经注销?如果'Meteor.user()'仍然有一个值,那么它会显示它们仍然登录。另外,对于正在登录的用户,请检查'Meteor.userId()'而不是'Meteor.user()'。由于在网络上发布整个用户对象所需的时间,尤其是在用户对象很大的情况下,可能会在后者之前存在。 –

+0

那么,通过“用户注销”我的意思是陈旧的会议方式注销而不是流星的方式。陈旧的会话将loginToken的用户表字段设置为/更新为空,并且项目变得无用。 是的,我也检查了Meteor.userId(),但没有成功 –

回答

0

我已经找到了解决方案,并且如果有人需要,它会在这里发布它。

我挖成陈旧封装代码,并在其client.js我替换为

Meteor.setInterval(function() { 
if (Meteor.userId()) { 

    if(activityDetected){ 
     Meteor.call('heartbeat'); 
     activityDetected = false; 
    } else { 
     //This is the wanted behavior 
     Meteor.logout(); 
    } 
} 

}, heartbeatInterval); 

代码如果在jQuery的事件而言没有检测到活动,我只需调用注销和不需要到担心Meteor.user()或Meteor.userId()等。它只是注销并转到我实现的登录屏幕路线。