【发布时间】:2016-04-15 23:35:05
【问题描述】:
我一直在使用 React 和 React-Router 组合一个单页应用程序,但我似乎无法理解如何保护这些应用程序。
我发现了一个很清晰的blog post,它显示了一种方法,但对我来说它看起来不是很安全。基本上,该帖子中提出的方法是限制用户无权访问的组件的呈现。作者写了几篇关于这个想法的变体,将其扩展到 React-Router 路由和其他组件,但在他们的内心深处,所有这些方法似乎都依赖于同样有缺陷的想法:客户端代码决定做什么基于组成组件时存储中的数据。这对我来说似乎是个问题 - 有什么办法可以阻止一个有进取心的黑客弄乱代码来获取东西?
我想到了三种不同的方法,但我都不满意:
我当然可以编写我的授权代码,使客户端代码不断与服务器检查授权,但这似乎很浪费。
我可以设置应用程序,以便只有在服务器验证客户端有权访问该代码后,模块才会从服务器推送到客户端。但这似乎涉及将我的代码分解成一百万个小模块,而不是一个漂亮的整体包(我正在使用 browserify)。
某些服务器端渲染系统可能会工作,这将确保用户只能看到服务器已决定他们有权查看的页面。但这似乎很复杂,而且似乎是一种倒退(如果我希望服务器完成所有操作,我可以编写一个传统的 Web 应用程序)。
那么,最好的方法是什么?其他人是如何解决这个问题的?
【问题讨论】:
标签: reactjs single-page-application react-router redux