【发布时间】:2019-06-10 10:55:24
【问题描述】:
所以我在过去几周遇到了一些事情,这让我提高了对 REST 的理解。
在工作中,我们遇到了一些 rest api 资源访问问题,这些资源访问具有一些非常复杂的访问权限,所以我想知道是否有人可以帮助我了解我们是否/什么做错了,以及正确的方法是什么。
所以我们遇到的问题是我们有一个用于获取所有订单的端点。例如/orders 这个端点有分页和过滤器等,这个端点会得到一个订单列表。
我们有两种主要类型的用户(管理员和帐户)。
如果您是管理员,则可以查看所有订单,如果您是帐户用户,则有点棘手,因为帐户用户可以根据一组权限查看订单。
因此,默认情况下,帐户用户可以查看他们已下的所有订单。他们还可以看到他们有的任何订单。 (所以这里的区别是订单是由一个用户下的,但可以是另一个用户。例如,我可能会为另一个用户订购东西)。
由于应用程序的设计方式,用户也可以看到其他分支机构的订单,例如一个分支机构报告者,它处理来自所有分支机构的订单并整理报告等。
所以所有这一切的一个例子是: 如果您是管理员,则默认查看所有订单;如果您是帐户用户,并且拥有分支 x 和 y 的权限,您将看到 x 和 y 的所有订单以及您自己下的任何订单。
这里的域设计有问题吗,是什么阻止我看到可行的解决方案?
我一直在研究用户上下文,所以这可能是一种解决一些问题的方法。例如,不同的用户以不同的方式查看不同的资源。因此,要不制作一个适合所有解决方案(这绝对是),您应该构建 3 个 api。如果我这样做了,我绝对可以将管理员与帐户分开。但我不知道如何处理帐户的复杂性。
我怀疑这与删除从数据库中签出的这些权限并将它们移入权限有关,但我不确定如何处理动态权限。
很抱歉,如果其中很多内容是咆哮或者这没有意义。即使只是为了让我走上正确的道路,任何帮助都将不胜感激。 就像我说的那样,我一直在尝试了解如何配置 REST,同时试图忘记底层数据库,但是像这样的问题让我很困惑。
【问题讨论】:
-
你喝酒了吗? :-) 也许你可以试着把这个问题画成一个图表,这样可以解决问题。
-
我希望 :P yer 我会添加一个图表