阻止用户按角色查看Meteor客户端脚本

时间:2016-02-05 19:39:16

标签: javascript security meteor roles

在Meteor中,我们将所有敏感代码放在/server中,将浏览器代码放在/client中。然后Meteor自动编译并缩小所有/client侧码。谢谢流星。

但是,我正在使用https://github.com/alanning/meteor-roles按用户角色管理内容。其中一个角色是管理员,我有一个客户端脚本,仅供该用户使用,例如:/client/admin-only/**.js。这些脚本中的所有代码都会检查用户是管理员,只调用服务器来执行敏感任务,但我不希望除管理员之外的任何人都能看到该代码。

我想要确保的是,这些客户端管理员JS文件仅下载给实际管理员的用户,而不包含在由Meteor创建的自动编译/缩小的JS中。

有没有办法设置Meteor来生成它的客户端JS的两个版本 - 一个用于普通用户,一个用于管理员 - 并且只根据用户角色下载这些文件?

1 个答案:

答案 0 :(得分:0)

Meteor Guide解决了这个问题:

  

虽然浏览器必须访问应用程序的客户端代码,但每个应用程序在服务器上都有一些您不想与全世界共享的密码。应用程序中的秘密业务逻辑应位于仅加载到服务器上的代码中。这意味着它位于应用程序的服务器/目录中,仅包含在服务器上的程序包中,或者位于仅在服务器上加载的程序包内的文件中。

基本上,MDG的指导是尽可能地愚弄管理视图。如果这是不可接受的,您需要将其捆绑在仅在内部可访问网络上的单独Meteor应用程序中,或者使用two MongoDB instances,以便您可以为第二个应用程序分离身份验证