首页 > 解决方案 > 是否可以在 Fluid Framework 中设置访问规则?

问题描述

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

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

流体常见问题解答中,它说明了以下内容:

回合制游戏?
DDS 可用于分发游戏的状态,包括轮到谁了。执行游戏规则取决于客户,因此在防止作弊方面可能需要解决一些有趣的问题,但 Fluid 团队已经制作了几款游戏的原型。

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

标签: securityfluid-framework

解决方案


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

作为 DDS 功能

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

我认为构建“OwnedDDS”或 DDS 库并在其上使用过滤方法以防止无效更改会很有趣。

服务器托管的 Fluid Bot 过滤器

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

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

存储和服务器级 ACL

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


推荐阅读