我正在使用发布来限制用户在他们的报告中看到的数据
Meteor.publish("companyReport", function(){
if(!this.userId) return null;
var user = Meteor.users.findOne(this.userId);
var userCompany = user.profile.company;
var userRole = user.roles;
var userName = user.username;
if(function(){Roles.userIsInRole(Meteor.user(), ['chiefs']);})
{return ReportCollection.find({companyName:userCompany});}
else if (function(){Roles.userIsInRole(Meteor.user(), ['managers']);})
{return ReportCollection.find({companyName:userCompany, managerName:userName});}
else
{return null;}
});
现在,在客户端我可以简单地订阅。它通常工作正常,除了:
我注意到以下我不想要的奇怪行为:如果我以“首席”角色用户身份登录,并且可以查看公司范围的报告,如果我注销然后以“经理”用户身份登录,我可以仍然看到我应该不允许看到的数据。
我知道我的出版物控制机制工作正常,因为当我从另一个浏览器以管理员身份登录时,我看到了正确的结果(更有限)
我只能得出结论,客户端上的 minimongo 将旧订阅中的收集数据保留为“首席”用户。
这个对吗?如果是这样,我如何在注销时刷新这些数据?或者?人们通常会做什么来避免这种情况?
谢谢