是否可以在 Fluid Framework 中设置访问规则?

Is it possible to have access rules in Fluid Framework?

如果所有协作者都是平等的(允许更改相同的资源),Fluid 看起来非常好,但我不明白的是服务器如何阻止某些用户的某些操作。尽可能多的逻辑是在客户端吧?也许我搜索得不够好,但找不到解释该部分的资源或自述文件。

示例:
用户A可以编辑整个markdown文档。
用户 B 可以编辑整个 markdown 文档。
两个用户都可以将他们创建的段落锁定为只读,只有他们可以再次解锁。

Fluid FAQ 上声明如下:

Turn-based games?
DDSes can be used to distribute state for games, including whose turn it is. It’s up to the client to enforce the rules of a game so there may be some interesting problems to solve around preventing cheating but the Fluid team has already prototyped several games.

如果这个问题没有解决方案,请让我知道我应该从哪里开始我自己解决这个问题。对于一个有趣的爱好项目,我正在决定构建新的东西或使用流体(这可以节省我很多工作)。

目前,Fluid 没有访问控制的概念,但我们可以包含一些相关功能作为 DDS 功能,我们可以将一些功能实现为服务器托管的 Fluid Bot 过滤器,我们可以在服务器层将基本 ACL 实现为存储 ACL。

作为 DDS 功能

我写 "OwnedMap DDS" 来展示这个概念,其中用户拒绝来自其他用户的无效更改。这可以扩展为包括您的“段落锁定”概念,但我不确定它是否严格安全。

我认为构建一个带有过滤方法的“OwnedDDS”或 DDS 库以防止无效更改会很有趣。

服务器托管的 Fluid Bot 过滤器

另一种选择是拥有服务器端客户端,因此加入会话的非用户客户端不是恶意行为者。该机器人可以验证更改是否合法,然后“同意”更改。这打破了一些乐观的插入约束,但会增加更多的安全性并且更加严格。

使用这种方法,您可能仍需要修改 DDS,使它们基于共识而非乐观,但唯一的共识是机器人同意更改有效。

存储和服务器级 ACL

您可以想象修改 routerlicious 参考服务,您需要用户登录才能访问特定容器。这不像您的要求那样细化,但显然可以工作!