【发布时间】:2015-07-22 02:02:21
【问题描述】:
我很关心如何在 React 应用程序中使用不同的角色。 假设用户尝试登录并将用户名、密码发送到服务器。 如果用户已登录,他/她将在应用程序中拥有不同的角色,如管理员、用户等。
{
"_id" : 8937493874398,
"role" : "user"
}
将其保存在 Flux 商店中是否安全?用户可以在 javascript 控制台或类似的地方更改角色吗?
处理这个问题的正确方法是什么?我们希望对具有角色的用户隐藏应用程序的某些部分:用户并允许角色:管理员的事情
【问题讨论】:
-
不应信任客户端的任何内容。我认为您不想隐藏应用程序的某些部分,您想隐藏这些部分公开的功能或数据,这一切都应该远离客户端。所以,如果我能够将我的角色从“用户”更改为“精英超级管理员”,我可以看到精英超级管理员界面,但无论它试图获取的任何数据都会被任何 api 锁定你呼唤。
-
是的,我会阻止在服务器端采取行动。但在某些情况下,我绝对不想为未经授权的用户展示功能。也许他们没有付钱等等。我以前没有构建过 SPA 应用程序,我找不到一个很好的解决方案。 @Crob
-
我同意克罗布的观点。如果您的应用程序需要基于身份验证级别的界面中的重要限制,则 SPA 可能不是最佳解决方案。您可以对服务器进行频繁的身份验证调用以确保客户端具有正确的角色,但正如 Crob 所说:客户端上的任何内容都不应该被信任。如果用户足够聪明,可以从控制台更改通量存储,那么为用户公开无用的管理界面不会是您最大的安全问题。
-
好的,所以解决方案是不使用 AngularJS、React 或任何其他前端库来解决此类问题?我的印象是,现在使用的大多数 SPA 应用程序都处理某种角色、组等。
-
这不是我要说的。但是您必须习惯于认为您发送给客户端的所有内容都可以访问。如果 javascript 源代码包含暴露公司机密的 React/DOM 代码,那么您就有问题了。
标签: javascript reactjs reactjs-flux