javascript - 如何防止 Meteor.user() 的计时漏洞?

标签 javascript meteor

模板请求...

if (this.userRequesting._id === Meteor.user()._id) { ... }

...检查一个人的身份。 (我怀疑这不是处理这个问题的最佳方法,但我会将其保留到另一个问题,以免使这个问题重载)。

我的问题是,这会导致巨大的错误级联,表明 Meteor.user() 未定义,在页面加载时...页面加载后,这段代码执行没有问题。显然,存在一个计时漏洞(或者我认为是这样),其中 Meteor.user() 在页面加载时瞬间保持未分配状态。将上面的代码替换为...

    ____________
if (Meteor.user() && this.userRequesting._id == Meteor.user()._id) { ... }

...解决了问题,但是...来吧...这不可能是犹太洁食。我对模板和 Meteor 做出了什么错误的假设?

如果相关的话,我正在使用accounts-password作为我的作弊账户管理器。

<小时/>

[编辑]:这看起来像 same problem ,但我留下这个问题的前提是我正在寻找解决方案,而不是解决方法。 (我已经知道检查 Meteor.user() 可以解决这个问题。)

最佳答案

是的,你基本上已经猜对了。当您第一次刷新页面时,用户不会被视为已登录,并且必须验证是否已登录。但是模板内容会立即被调用,然后在加载其他内容时再次调用(如果您在 rendered 方法中放置 alert ,您会注意到这一点)。最好的解决方案正是您所建议的,尽管您可以使用 Meteor.userId() 来获取 id:

if (Meteor.userId() && Meteor.userId() === this.userRequesting._id) {
    // ...

关于javascript - 如何防止 Meteor.user() 的计时漏洞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18478279/

相关文章:

javascript - 如何在 React carousal 中为字母表添加动画效果?

javascript - meteor 计时器中的 Meteor.setTimeout() 问题?

Meteor 1.0.2 在简单循环 : "Expected tag name after ` <`" 上崩溃

javascript - Meteor:如何通过 session 变量过滤数据

javascript - 不从静态(404 错误)Flaticon 和 Font-mfizz 加载图标 css

javascript - 使用缓冲区几何合并后,我无法更改几何的透明度/不透明度

javascript - 在 PHP 中回显 Javascript?

javascript - Three.js SceneExporter 出现未捕获的语法错误

javascript - 尝试将文件数组传递给 Meteor 方法

meteor - 实例化 Restivus 时出错 "Cannot find name ' Restivus' "