如何根据角色权限生成React客户端库?

时间:2016-10-31 15:10:59

标签: javascript reactjs

我正在为学校项目建立一个CMS。根据已登录用户与其关联的权限,需要隐藏/显示某些功能。我希望能够在服务器端整理所显示的功能,以便用户无法在client.js文件中看到禁用的功能。

实现这一目标的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

你想要完成的事情增加的复杂性在理论上是整齐的,但甚至不是国防部或国防承包商应用程序的高度关注。

发送或不发送端点并不能真正保护您免受太多伤害。如果用户正在检查您的JavaScript并尝试恶意,他们可能知道如何使用补丁检查器来了解您试图隐藏的端点的存在。

尝试构建动态版本的client.js及其维护的额外复杂性远远超过隐藏端点的收益。保护端点的最佳方法是确保端点执行授权检查,如果用户无权执行该操作,则返回403。

就应用程序安全性而言,这远远低于其他主要的应用程序强化问题,例如XSS和CSRF以及服务器上的正确服务器验证和授权检查。有关实际应用程序安全问题和漏洞的完整列表,我建议您阅读OWASP

答案 1 :(得分:0)

我建议这样做,但如果你真的想:

如果您使用webpack / browserify,您可以尝试构建2个js包:1' normal'没有特殊功能和1'特殊'通过指定不同的入口点与他们。这将要求您以这样的方式订购代码:特殊功能永远不会从正常情况中引用。 JS。

您可以为此创建各种解决方案。重新构建完整的代码库,放置某种垫片代替实际代码,在编译之前交换文件,或者设计某种运行时加载器以获得单独的代码。

如果您的代码中有某些内容,您真的不希望非管理员看到您可能更好地重新组织您的代码,以便在那里没有类似的东西。也许应该将一些逻辑移到服务器上?