Meteor中用于控制用户访问某些敏感页面的标准做法是什么?例如,只有Admin
级别的用户可以访问CRUD操作,那么阻止/允许用户访问这些页面的最佳方法是什么?
我知道我们可以使用publish
来限制用户对数据的访问权限,但对于网页,最好的方法是什么?
我正在考虑在渲染过程中检查用户级别,但是我不确定这种方法是否安全。
答案 0 :(得分:2)
您需要控制用户级别的唯一地方是发布和允许/拒绝回调。通过在发布中控制它,您确保用户不会收到它不应该知道的任何信息,并且通过在允许/拒绝回调中控制它,您确保用户不添加/编辑/删除信息&#39 ; s不允许。
如果您正在使用自定义方法进行CRUD操作(在服务器上),这是您需要控制用户级别的第三个位置(仅对CUD操作检查允许/拒绝回调)在客户端!)。
修改强>
有关如何使用allow回调的示例,请参阅http://docs.meteor.com/#allow deny回调以类似(但相反)的方式工作。至少有一个允许回调必须返回true
,并且所有拒绝回调必须返回false
才能授予操作。
答案 1 :(得分:2)
当前没有拒绝访问页面的方法,因为整个客户端代码被打包并作为一个应用程序发送。由于受限页面的代码在浏览器中,因此用户可以轻松访问该页面。
您可以做的是限制对这些页面上显示的数据的访问。有两件事要做:
指定用户可以查看的数据。这是通过publish and subscribe方法完成的。在Meteor.publish
方法中,您可以检查用户权限并确定用户可以看到的对象以及这些对象的哪些字段。
指定用户可以更改的数据。如其他答案所述,这是通过Collection.allow
和Collection.deny
方法实现的,检查每个CRUD操作的用户权限,并确定是否允许。