reactjs - React 基于角色的授权
问题描述
我目前正在开发一个反应应用程序,其中用户具有角色,我在这些用户之间共享了许多组件,但存在一些差异。我对如何处理基于角色的授权有点困惑,我有以下问题:
- 我是否应该为每个用户创建组件,即使它们中的大多数彼此非常相似,因为我不想用 if-else 语句和三元运算符填充代码?
解决方案
如果我可以投入两分钱,我不会只选择一个选项(创建新组件或使用 if-else)。相反,我将根据条款和条件同时使用它们。条款和条件是
- 如果组件不复杂,我将使用 if-else 或条件渲染
- 如果组件很复杂,我宁愿创建新的单独组件以避免通过在一个组件中混合所有条件来创建错误
- 如果我选择第 1 点,但后来组件变得更复杂,我宁愿为新条件创建新组件,这样旧组件就不会损坏并且新组件仍然可以处理
此外,根据我的经验,我认为最好不要根据角色对您的功能进行分类。因为,如果最初是只能由角色 A 访问的功能。那么,现在可以通过角色 B 访问该功能的增强功能。然后,您需要更新您的代码。
相反,您可以使用“特权”之类的东西(这只是概念/命名)。此特权的工作方式如下:每个功能都有自己的特权。然后,将权限分配给有资格访问该功能的任何角色。
例如,按钮/组件/功能 A 具有名为 Execute_A_Privilege 的权限。如果最初,Execute_A_Privilege 只赋予角色 A,那么角色 B 也想要它,您只需在数据库中分配它,然后角色 B 无需更新代码即可获得该功能。
推荐阅读
- c# - 当前的 php 函数如何解释为 c#?
- android - FCM android - 发件人ID不匹配
- html - CSS 内容:url 在 Internet Explorer 11 中不起作用
- visual-studio-code - vscode 扩展可以为特定文件创建资源管理器上下文菜单吗?
- javascript - 在行图上将“null”和“others”绘制为矩形
- coq - 在证明中替换“修复”的参数
- jsf - 在 Java EE 8 下注入失败 - 在 FacesValidator 中
- javascript - React 16:IE11 及以下版本的 script1002 语法错误
- java - 流收集后继续映射
- spring-boot - 使用spring-boot断路器(Hystrix)时如何将数据从业务方法传递到回退方法?