跨Spring-Javafx Server-Client系统访问控制



我有一个使用服务器 - 词点体系结构的系统。正如标题所述,服务器是使用Spring实施的,该Spring使用Javafx实现客户端。

我们在双方都放置了基本访问控件:

  • 用户需要注册/登录才能使任何访问应用程序
  • 赋予用户不同的访问权限,这使他们允许访问不同内容的权利。例如,管理员获得管理员权利,这使他们可以访问"/admin/... quot"。内容。

尽管基础知识正常,但我很难弄清楚如何使客户端应用程序显示仅显示菜单和链接。例如,如果普通用户登录,他们不应看到将它们带入管理内容的链接。

i 不要想要在客户端内进行硬核;我希望服务器确切地告诉我当前登录的用户可以访问哪些链接。

这样做的常见方法是什么?

更新

我不需要极其动态的行为,例如突然允许或不允许访问,因为另一个客户做了导致交易的事情,从而导致链条反应。

就我的情况而言,访问权限非常静态。更改之所以发生,主要是因为业务逻辑发生了变化。如果发生这种情况,我应该只更改服务器代码,并且客户端应能够自行响应更改。除非UI也有更改,否则客户不应改变。这将为我节省去任何地方X端客户端以更改客户端jar文件的麻烦。

我将举一个这样的更改的例子。

在银行系统中,有一些员工出售投资产品(即投资顾问)。该系统仅允许他们查看客户的投资细节。有一天,银行决定投资顾问还应该可以访问银行帐户详细信息,以便他们可以扫描潜在客户。

此更改只能在服务器上完成,因为客户端上没有实现实际功能。如果系统使用Web界面,则可以很容易地解决此问题,因为该网页是由服务器动态生成的。不幸的是,我没有此选项,因为客户端是Javafx应用程序。

首先误解了您的问题。答案:IMO no 。这不是一个好主意,也不是IMO做的标准。原因是,此链接列表的背后可能会有复杂的规则,而用户可以访问可能会从某些状态进行更改。例如,作为银行的初级雇员,我无法访问拥有超过400万美元的客户帐户。一个帐户有300万美元,下一秒钟。我尝试在您的javafx应用中做一些事情,然后单击链接,不起作用。

您可能会说这是一个糟糕的例子,因为您将不包含动态链接,而对于这种情况,用户只会在操作失败时会出现错误。然后我把它放在您的列表中变得多余将请求发送到服务器以获取永远不会更改的列表。

,但我觉得沿着将规则外部化到库中的道路会让您处于在客户端和服务器之间创建紧密耦合的道路,尽管肯定有有效的用例可以做到这一点,但这是我会的。尝试避免。

相反,我将专注于创建有意义的角色,所有开发人员和商人都对此充分理解了这些角色,并按照您直观地期待的角色编码。

最新更新