跨Spring-JavaFX服务器 - 客户端系统

时间:2017-11-29 01:36:10

标签: java spring javafx client-server access-control

我有一个使用服务器 - 客户端架构的系统。正如标题所说,服务器是使用Spring实现的,它提供RESTful Web服务,而客户端则使用JavaFX实现。

我们已在双方都设置了基本访问控制:

  • 用户需要注册/登录才能访问该应用程序
  • 为用户提供不同的访问权限,允许他们访问不同内容的权限。例如,管理员获得管理员权限,这使他们可以访问“/ admin / .....”内容。

虽然基础工作正常,但我很难弄清楚如何使客户端应用程序只显示他们可以访问的菜单和链接。例如,如果普通用户登录,则他们不应该看到将它们带到管理内容的链接。

想要在客户端内部核心;我希望服务器准确地告诉我当前登录的用户可以访问哪些链接。

有哪些常见方法可以做到这一点?

更新

我不需要极端动态的行为,例如突然允许或禁止访问,因为另一个客户端做了导致事务被提交的事情,导致某处的连锁反应。

对于我的情况,访问权限是非常静态的。这些变化的发生主要是因为业务逻辑发生了变化。如果发生这种情况,我应该只更改服务器代码,客户端应该能够自己响应更改。除非UI中也有变化,否则客户端不应该有任何变化。这样可以省去转到位于任何地方的X个客户端以更改客户端JAR文件的麻烦。

我将举例说明这种变化。

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

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

1 个答案:

答案 0 :(得分:0)

首先抱歉,误读了你的问题。 答案:IMO NO 。做IMO这不是一个好主意或标准的事情。原因是用户可以访问的链接列表背后可能存在复杂的规则,这些链接可能会从某个状态发生变化。例如,作为银行的初级员工,我无法访问拥有超过400万美元的客户帐户。有一刻,一个帐户有300万美元,下一秒5.我尝试在你的JavaFX应用程序之间做一些事情并点击链接,不起作用。

您可能会说这是一个糟糕的例子,因为您不会像这样的情况包含动态链接,相反,如果操作失败,用户只会收到错误。然后我把它放到你这个列表变得多余,因为它会破坏服务器的目的告诉你你有什么访问权限,这可能只是放在某个地方的某个库中,并作为依赖包含在客户端中以避免它们需要向服务器发送一个永不改变的列表请求。

但是我觉得将规则外化到库中的路径会让你走上一条在客户端和服务器之间建立紧密耦合的道路,尽管这样做肯定会有有效的用例,它可以用来实现。我试图避免的事情。

相反,我会专注于创建有意义的角色,所有开发人员和业务人员都能很好地理解这些角色,并按照您的直觉期望对这些角色进行编码。