gpt4 book ai didi

java - 对 Flex 中现有应用程序实现基于角色的授权的建议

转载 作者:行者123 更新时间:2023-12-02 00:40:05 26 4
gpt4 key购买 nike

我有一个应用程序,它在 UI 端使用 Flex 3 进行编码,在服务层使用 java @ 以及 BlazeDS 进行编码。现在我们需要根据数据库中为用户定义的角色来授权用户访问系统,例如:假设具有 guest 角色的用户不应该能够访问 ui 上的“管理”选项卡,也不应该能够执行任何操作除了查看仪表板上显示的数据之外,还可以进行其他操作。这里还需要注意的是, super 用户可以从 UI 动态创建角色。

我发现了这个链接,它描述了如何执行 Role Based Authentication & Authorization

通过这种方法,我需要在 service-config.xml 中定义角色,但由于我的角色没有预先定义,所以我不能这样做。

有人遇到过类似的情况吗?任何指示都会有很大帮助。

最佳答案

是的,我也不喜欢服务配置的想法,不要怪你。

就 Flex 而言,您需要担心的只是定义权限,当然不是角色或用户。

良好的基于​​角色的安全性涉及定义用户、角色和权限。您可能知道这一点,但无论如何,带着问题大声说出来是件好事。

  • 用户被分配一个或多个角色
  • 角色被分配了一项或多项权限
  • 权限安全功能

因此,在您的应用程序中,您定义特定的权限 - 依赖于安全性的应用程序的各个部分 - 可见/不可见/可以或不能执行等。我通常这样做的方式是使用字符串常量。因此,在订单管理情况下,我可能有 CanCreateOrderCanViewOrderCanCancelOrderCanFlagOrder

在服务器端,角色将与这些权限绑定(bind)。可以说:

  • 管理员可以做所有事情
  • CustomerService 可以查看和标记
  • 客户可以查看

因此,在服务器端,作为管理员的用户 A 获取与所分配的角色相关的所有权限的列表,因此服务器会发回如下字符串 CanCreateOrder,CanViewOrder,CanCancelOrder,CanFlagOrder

在您的应用程序内部,当用户通过身份验证并获取该列表时,会将其存储到某处的静态全局变量中(或者将其 .split() 到数组等中)。

然后,在检查单个项目的可见性或访问权限时,您只需检查该数组或值字符串即可。

这提供了很大的灵 active ,因为您正在定义的项目,最重要的是,您基本上是硬编码的权限 - 特定于它们所在的功能代码。因此,没有'不需要调整它们。

因此,如果您想让客户服务代表能够稍后取消订单,您只需将该权限与该角色绑定(bind)即可。完毕。不需要更改任何代码,因为它的权限只是与该功能相关联,而不是与用户或角色相关联。

我已经在许多应用程序中做到了这一点,这是一个可靠的设计。如果您需要与其他 key 绑定(bind)的权限,那就是一个稍微不同的故事,但无论如何这是一个很好的起点。

有道理吗?

**当然,您可以加密安全交换并通过 SSL 发送,确保交易安全不在讨论范围内;)

关于java - 对 Flex 中现有应用程序实现基于角色的授权的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6637111/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com