简而言之:
在编写访问控制相关代码时,通常应在服务器端执行这些基于角色的访问控制(RBAC)检查。
客户端 JavaScript 中的 RBAC 代码可能被客户端篡改。
这意味着,在定义员工、管理员和版主的核心 RBAC 权限时,通常应在 Rails 中实现,而不是在 JavaScript 中。
顺便一提,Discourse 现在也是通过其称为“守护者”(guardian)的机制来实现 RBAC 的,这是一个名为 class Guardian 的 Ruby 类,代码如下:
如果开发者打算通过在 JavaScript 代码中调用 Discourse API 来添加 RBAC 检查,请注意,这段代码可能被攻破,因为在浏览器中运行的代码是可以被篡改的。
我的建议是:确保所有核心 RBAC 逻辑都在服务器端执行,切勿试图在客户端 JavaScript 中绕过这一机制。