2014-01-31 30 views
0

我正沿着例如书籍“Packtpub.Getting.Started.with.Meteor.js”借阅图书馆的应用程序如下。如何在用户注销后删除数据?

http://matloob.lendlib.meteor.com

它工作正常,但是当用户注销时,一类是开放的,正在显示它的项目,该类别及其项目保留在网页上,而其余部分被过滤:它是在运行出。在刷新页面时,剩余的类别也被过滤掉。

的发布功能是:

Meteor.publish("Categories", function() { 
    Meteor.flush(); // I added this so it will flush out the remaining data, but :(

    return lists.find({owner: this.userId}, {fields: {Category: 1}}); 
}); 

回答

0

很难指出确切的漏洞全无看到更多的代码,但是这是我能找到的:即使没有登录为一个可以设置用户会话变量current_list一个ID来获得相应的列表文件:

Session.set("current_list",'ZLREaTCPiC6E7ece3') 

所以我认为地方在你的代码发布给其ID列表的详细信息。

至少这可以解释为什么在列表即使选择一个类别(这反过来又意味着current_list拥有一个id)注销后仍然存在。

可能发布列表使用Deps.autorun,因为一旦会话变量改变列表被立即发布完成。

也许你可以找到那段代码并发布它,或者只是更改它,以便它还包括检查用户是否是该列表或类别的所有者。

0

考虑使用user-status包监听用户注销,并在服务器上做一些清理的结果:

https://github.com/mizzao/meteor-user-status

Specfically,您可以使用下面的回调:

UserStatus.on "sessionLogout", (advice) -> 
    console.log(advice.userId + " with session " + advice.sessionId + " logged out") 
相关问题