Meteor.users
我在集合中有我的扩展用户模型,我将大部分字段从它发布到客户端。每个用户都有一个isAdmin
字段,false
默认设置为。
现在我有两个担忧,它们是相互关联的:
如果集合中的
isAdmin
字段设置为,如何确保仅能呈现用于管理员的组件?Meteor.users
true
如何确保不能从客户端控制台修改集合
isAdmin
上的字段?Meteor.users
关于1。
我很犹豫是否将此字段发布给客户端并在isAdmin
客户端进行简单评估。
我不确定控制台是否有一些骇人听闻的方式来简单地更改isAdmin
为允许呈现仅适用于客户端管理员的组件(或其中的一部分)的方式。例如,我可以想象这样做是可能的Object.defineProperty()
。
我应该使用它
server-side rendering
来保护我的 UI 的管理部分吗?
关于2。
考虑一下本文中关于常见错误的配置文件编辑的第一段。它表明可以通过从控制台调用轻松地从客户端更改。isAdmin
Meteor.users.update(Meteor.userId(), {$set: {'isAdmin': true}})
当我运行它并登录到我的应用程序时,我明白update failed: Access denied
了。
但即使官方文档仍然建议添加
// Deny all client-side updates on the Lists collection
Lists.deny({
insert() { return true; },
update() { return true; },
remove() { return true; },
});
在https://guide.meteor.com/security.html#allow-deny
有一个答案,表明只要isAdmin
确定服务器端的属性就足够了Meteor.methods
。但它根本不说话allow-deny
,它已经6岁了。
谁能告诉我,今天的真实情况如何?