铁哥 restful 字段权限的控制

铁哥restful 服务程序是一款免费、开箱即用的 restful 服务程序,简单配置就可以获得所有 restful 接口

延续上一节《最简洁的权限控制》,这一节是说明对每个字段的访问控制

一、可查询字段和记录

在 right.json5中,编辑表users中 query 的信息,添加 column , return_column, row 配置。

column是限制是哪些角色可以取哪些字段,下面的配置是只有角色 admin 可以取到表 users 中的 password 字段。

column也可在 insert和update配置中使用,表示用户角色可插入和更新的字段。

return_column 是限制可返回字段,其中能返回记录里的 mobile字段的条件为:记录中的 id 与用户属性中的 id 相等,或者 用户角色为 admin (没有记录中的字段参与的条件,使用 下划线加数字来表示)。

row 是查询条件限制,只有用户属性中的id 与字段 id 的值相等,或者角色为 admin 时,才会返回该条记录。程序内部会根据 row 生成 where 语句。

row的条件也可使用在 insert, update 和 delete 里,限制用户可插入、更新和删除的记录条件。

{

    "default_user": {

        "user": "visitor",

        "vip": 0,

        "id": 0

    },

    "role": {

        "all": {

            "user": [

                "admin",

                "user",

                "visitor"

            ]

        },

        "admin": {

            "user": "admin"

        },

        "common": {

            "user": "user"

        },

        "visitor": {

            "user": "visitor"

        }

    },

    "table": {

        "users": {

            "query": {

                "role": [

                    "user",

                    "admin"

                ],

                "column": {

                    "password": [

                        "admin"

                    ]

                },

                "return_column": {

                    "mobile": [

                        {

                            "id": {

                                "id": "="

                            }

                        },

                        {

                            "_1": {

                                "role": "admin"

                            },


                        }

                    ]

                },

                "row": [

                    {

                        "id": {

                            "id": "="

                        },


                    },

                    {

                        "_1": {

                            "role": "admin"

                        },


                    }

                ]

            }

        }

    }

}

二、可插入字段

在表 posts 中的 insert 信息里配置 column 和 row,下面示例表示:

create_at 字段只有admin角色可以插入,用户不可插入。

只有记录中的 user_id 和 用户属性的 id 相等时,才可以插入此记录。

{

    "default_user": {

        "user": "visitor",

        "vip": 0,

        "id": 0

    },

    "role": {

        "all": {

            "user": [

                "admin",

                "user",

                "visitor"

            ]

        },

        "admin": {

            "user": "admin"

        },

        "common": {

            "user": "user"

        },

        "visitor": {

            "user": "visitor"

        }

    },

    "table": {

        "posts": {

            "insert": {

                "role": [

                    "user",

                    "admin"

                ],

                "column": {

                    "create_at": [

                        "admin"

                    ]

                },

                "row": [

                    {

                        "user_id": {

                            "id": "="

                        },


                    },

                    {

                        "_1": {

                            "role": "admin"

                        },


                    }

                ]

            }

        }

    }

}

三、可更新字段和记录

在 users 表中 update信息里配置 column和row, 下面的示例表示:

只有角色为 admin 的用户才可以更新 password和mobile字段,其它字段不受影响。

只有记录的id与用户属性中的id相等,或者用户角色为 admin 时才能更新此记录。

{

    "default_user": {

        "user": "visitor",

        "vip": 0,

        "id": 0

    },

    "role": {

        "all": {

            "user": [

                "admin",

                "user",

                "visitor"

            ]

        },

        "admin": {

            "user": "admin"

        },

        "common": {

            "user": "user"

        },

        "visitor": {

            "user": "visitor"

        }

    },

    "table": {

        "users": {

            "update": {

                "role": [

                    "user",

                    "admin"

                ],

                "column": {

                    "password": [

                        "admin"

                    ],

                    "mobile": [

                        "admin"

                    ],


                },

                "row": [

                    {

                        "id": {

                            "id": "="

                        },


                    },

                    {

                        "_1": {

                            "role": "admin"

                        },


                    }

                ]

            }

        }

    }

}

四、可删除记录

在 posts 中配置 delete 信息,下面示例表示:

只有记录的user_id与用户属性中的id相等,或者用户角色为 admin 时才能删除此记录。

{

    "default_user": {

        "user": "visitor",

        "vip": 0,

        "id": 0

    },

    "role": {

        "all": {

            "user": [

                "admin",

                "user",

                "visitor"

            ]

        },

        "admin": {

            "user": "admin"

        },

        "common": {

            "user": "user"

        },

        "visitor": {

            "user": "visitor"

        }

    },

    "table": {

        "posts": {

            "delete": {

                "role": [

                    "user",

                    "admin"

                ],

                "row": [

                    {

                        "user_id": {

                            "id": "="

                        },


                    },

                    {

                        "_1": {

                            "role": "admin"

                        },


                    }

                ]

            }

        }

    }

}

条件中的逻辑关系操作支持所有SQL里等价的操作,比如 in, not in, !=, >, <, like 等等,详细描述请看下一节(权限文件逻辑操作符)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容