对于权限有效负载,我应该手动列出操作或从控制器以编程方式加载操作吗?

时间:2017-06-08 07:48:04

标签: ruby-on-rails permissions

在我的Rails API应用程序中,我发送的用户权限有效负载类似于:

{
    "permissions": {
        "payment": ["read", "create"],
        "order": ["read", "create", "update", "delete"]
    }
}

这里,支付可以说是控制器(更可能被称为特征,并且特征可能涉及多个控制器)。 "阅读","删除"等等是行动。如果您熟悉它,我将使用Pundit gem,尽管这是偶然的。

我需要所有可能的控制器(键)及其操作(值)的哈希来构建完整权限哈希。例如,在权限管理页面中将需要这样做。

编辑:澄清 - 用户的权限有效内容中列出的任何操作(保存在数据库中)意味着该用户可以使用该操作。例如,如果permissions["order"]返回nil,则该用户将无权访问任何OrdersController操作。

我的问题是:我应该以编程方式加载所有控制器及其操作,还是应该手动列出它们。例如,我可以这样做:

OrdersController.instance_methods(false)

或者在OrdersController中,我可以:

ACTION_LIST = ["read", "create", "update", "delete"]

您认为哪种更有意义且更安全?这个设置是否有任何漏洞?

0 个答案:

没有答案