leslie-tsang commented on a change in pull request #5274:
URL: https://github.com/apache/apisix/pull/5274#discussion_r732370784



##########
File path: docs/zh/latest/plugins/authz-casbin.md
##########
@@ -0,0 +1,249 @@
+---
+title: authz-casbin
+---
+
+<!--
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+-->
+
+## 目录
+
+- [**简介**](#简介)
+- [**属性**](#属性)
+- [**元数据**](#元数据)
+- [**如何启用**](#如何启用)
+- [**测试插件**](#测试插件)
+- [**禁用插件**](#禁用插件)
+- [**示例**](#示例)
+
+## 简介
+
+`authz-casbin` 是一个基于 [Lua Casbin](https://github.com/casbin/lua-casbin/) 
的访问控制插件,该插件支持基于各种访问控制模型的授权场景。
+
+有关如何创建模型和策略的详细文档, 请参阅 [Casbin](https://casbin.org/docs/en/supported-models)。
+
+## 属性
+
+| 名称        | 类型   | 必选项| 默认值 | 有效值 | 描述                                  |
+| ----------- | ------ | ----------- | ------- | ----- | 
---------------------------|
+| model_path  | string | 必须    |         |       | Casbin 模型配置文件路径           |
+| policy_path | string | 必须    |         |       | Casbin 策略配置文件路径           |
+| model       | string | 必须    |         |       | 描述 Casbin 的模型定义            |
+| policy      | string | 必须    |         |       | 描述 Casbin 的策略定义            |
+| username    | string | 必须    |         |       | 描述请求中有可以通过访问控制的用户名 |

Review comment:
       Need for better translation of `in text format`.

##########
File path: docs/zh/latest/plugins/authz-casbin.md
##########
@@ -0,0 +1,249 @@
+---
+title: authz-casbin
+---
+
+<!--
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+-->
+
+## 目录
+
+- [**简介**](#简介)
+- [**属性**](#属性)
+- [**元数据**](#元数据)
+- [**如何启用**](#如何启用)
+- [**测试插件**](#测试插件)
+- [**禁用插件**](#禁用插件)
+- [**示例**](#示例)
+
+## 简介
+
+`authz-casbin` 是一个基于 [Lua Casbin](https://github.com/casbin/lua-casbin/) 
的访问控制插件,该插件支持基于各种访问控制模型的授权场景。
+
+有关如何创建模型和策略的详细文档, 请参阅 [Casbin](https://casbin.org/docs/en/supported-models)。
+
+## 属性
+
+| 名称        | 类型   | 必选项| 默认值 | 有效值 | 描述                                  |
+| ----------- | ------ | ----------- | ------- | ----- | 
---------------------------|
+| model_path  | string | 必须    |         |       | Casbin 模型配置文件路径           |
+| policy_path | string | 必须    |         |       | Casbin 策略配置文件路径           |
+| model       | string | 必须    |         |       | 描述 Casbin 的模型定义            |
+| policy      | string | 必须    |         |       | 描述 Casbin 的策略定义            |
+| username    | string | 必须    |         |       | 描述请求中有可以通过访问控制的用户名 |
+
+**注意**: 在插件配置中指定 `model_path`、`policy_path` 和 `username`,或者在插件配置中指定 `model`、 
`policy` 和 `username` 来使插件生效。如果你想使用全局的 Casbin 配置,可以先在插件元数据中指定模型和策略,然后插件配置中指定 
`username`。通过这种方式可以使所有的路由共享一个配置。
+
+## 元数据
+
+| 名称        | 类型   | 必选项 | 默认值 | 有效值 | 描述                          |
+| ----------- | ------ | ----------- | ------- | -----                       |
+| model       | string | 必须    |         |       | 描述 Casbin 的模型定义     |
+| policy      | string | 必须    |         |       | 描述 Casbin 的策略定义     |

Review comment:
       ```suggestion
   | 名称        | 类型   | 必选项 | 默认值 | 有效值 | 描述                          |
   | ----------- | ------ | ------ | ------- | ----- | 
---------------------------|
   | model       | string | 必须    |         |       | 描述 Casbin 的模型定义     |
   | policy      | string | 必须    |         |       | 描述 Casbin 的策略定义     |
   ```
   Markdown syntax errors.

##########
File path: docs/zh/latest/plugins/authz-casbin.md
##########
@@ -0,0 +1,249 @@
+---
+title: authz-casbin
+---
+
+<!--
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+-->
+
+## 目录
+
+- [**简介**](#简介)
+- [**属性**](#属性)
+- [**元数据**](#元数据)
+- [**如何启用**](#如何启用)
+- [**测试插件**](#测试插件)
+- [**禁用插件**](#禁用插件)
+- [**示例**](#示例)
+
+## 简介
+
+`authz-casbin` 是一个基于 [Lua Casbin](https://github.com/casbin/lua-casbin/) 
的访问控制插件,该插件支持基于各种访问控制模型的授权场景。
+
+有关如何创建模型和策略的详细文档, 请参阅 [Casbin](https://casbin.org/docs/en/supported-models)。
+
+## 属性
+
+| 名称        | 类型   | 必选项| 默认值 | 有效值 | 描述                                  |
+| ----------- | ------ | ----------- | ------- | ----- | 
---------------------------|
+| model_path  | string | 必须    |         |       | Casbin 模型配置文件路径           |
+| policy_path | string | 必须    |         |       | Casbin 策略配置文件路径           |
+| model       | string | 必须    |         |       | 描述 Casbin 的模型定义            |
+| policy      | string | 必须    |         |       | 描述 Casbin 的策略定义            |
+| username    | string | 必须    |         |       | 描述请求中有可以通过访问控制的用户名 |
+
+**注意**: 在插件配置中指定 `model_path`、`policy_path` 和 `username`,或者在插件配置中指定 `model`、 
`policy` 和 `username` 来使插件生效。如果你想使用全局的 Casbin 配置,可以先在插件元数据中指定模型和策略,然后插件配置中指定 
`username`。通过这种方式可以使所有的路由共享一个配置。
+
+## 元数据
+
+| 名称        | 类型   | 必选项 | 默认值 | 有效值 | 描述                          |
+| ----------- | ------ | ----------- | ------- | -----                       |
+| model       | string | 必须    |         |       | 描述 Casbin 的模型定义     |
+| policy      | string | 必须    |         |       | 描述 Casbin 的策略定义     |
+
+## 如何启用
+
+你可以通过使用模型/策略文件路径或直接在路由中配置模型/策略以启用插件。

Review comment:
       ```suggestion
   你可以通过使用模型/策略文件路径或直接在任意路由中配置模型/策略描述以启用该插件。
   ```

##########
File path: docs/zh/latest/plugins/authz-casbin.md
##########
@@ -0,0 +1,249 @@
+---
+title: authz-casbin
+---
+
+<!--
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+-->
+
+## 目录
+
+- [**简介**](#简介)
+- [**属性**](#属性)
+- [**元数据**](#元数据)
+- [**如何启用**](#如何启用)
+- [**测试插件**](#测试插件)
+- [**禁用插件**](#禁用插件)
+- [**示例**](#示例)
+
+## 简介
+
+`authz-casbin` 是一个基于 [Lua Casbin](https://github.com/casbin/lua-casbin/) 
的访问控制插件,该插件支持基于各种访问控制模型的授权场景。
+
+有关如何创建模型和策略的详细文档, 请参阅 [Casbin](https://casbin.org/docs/en/supported-models)。
+
+## 属性
+
+| 名称        | 类型   | 必选项| 默认值 | 有效值 | 描述                                  |
+| ----------- | ------ | ----------- | ------- | ----- | 
---------------------------|
+| model_path  | string | 必须    |         |       | Casbin 模型配置文件路径           |
+| policy_path | string | 必须    |         |       | Casbin 策略配置文件路径           |
+| model       | string | 必须    |         |       | 描述 Casbin 的模型定义            |
+| policy      | string | 必须    |         |       | 描述 Casbin 的策略定义            |
+| username    | string | 必须    |         |       | 描述请求中有可以通过访问控制的用户名 |
+
+**注意**: 在插件配置中指定 `model_path`、`policy_path` 和 `username`,或者在插件配置中指定 `model`、 
`policy` 和 `username` 来使插件生效。如果你想使用全局的 Casbin 配置,可以先在插件元数据中指定模型和策略,然后插件配置中指定 
`username`。通过这种方式可以使所有的路由共享一个配置。
+
+## 元数据
+
+| 名称        | 类型   | 必选项 | 默认值 | 有效值 | 描述                          |
+| ----------- | ------ | ----------- | ------- | -----                       |
+| model       | string | 必须    |         |       | 描述 Casbin 的模型定义     |
+| policy      | string | 必须    |         |       | 描述 Casbin 的策略定义     |
+
+## 如何启用
+
+你可以通过使用模型/策略文件路径或直接在路由中配置模型/策略以启用插件。
+
+### 通过配置文件启用
+
+```shell
+curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: 
edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
+{
+    "plugins": {
+        "authz-casbin": {
+            "model_path": "/path/to/model.conf",
+            "policy_path": "/path/to/policy.csv",
+            "username": "user"
+        }
+    },
+    "upstream": {
+        "nodes": {
+            "127.0.0.1:1980": 1
+        },
+        "type": "roundrobin"
+    },
+    "uri": "/*"
+}'
+```
+
+这将在你第一次请求时从模型/策略文件路径中创建一个 Casbin enforcer。
+
+### 通过路由配置启用
+
+```shell
+curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: 
edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
+{
+    "plugins": {
+        "authz-casbin": {
+            "model": "[request_definition]
+            r = sub, obj, act
+
+            [policy_definition]
+            p = sub, obj, act
+
+            [role_definition]
+            g = _, _
+
+            [policy_effect]
+            e = some(where (p.eft == allow))
+
+            [matchers]
+            m = (g(r.sub, p.sub) || keyMatch(r.sub, p.sub)) && keyMatch(r.obj, 
p.obj) && keyMatch(r.act, p.act)",
+
+            "policy": "p, *, /, GET
+            p, admin, *, *
+            g, alice, admin",
+
+            "username": "user"
+        }
+    },
+    "upstream": {
+        "nodes": {
+            "127.0.0.1:1980": 1
+        },
+        "type": "roundrobin"
+    },
+    "uri": "/*"
+}'
+```
+
+这将在你第一次请求时从模型和策略描述中创建一个 Casbin enforcer。
+
+### 通过 plugin metadata 配置模型/策略
+
+首先,发送一个 `PUT` 请求,使用 Admin API 
将模型和策略配置信息添加到插件的元数据中。所有通过这种插件的方式创建的路由都会带有一个带插件元数据配置的 Casbin enforcer。同时也可以使用 
`PUT` 请求修改模型和策略配置信息,Apache APISIX 会自动读取最新的配置。
+
+```shell
+curl http://127.0.0.1:9080/apisix/admin/plugin_metadata/authz-casbin -H 
'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -i -X PUT -d '
+{
+"model": "[request_definition]
+r = sub, obj, act
+
+[policy_definition]
+p = sub, obj, act
+
+[role_definition]
+g = _, _
+
+[policy_effect]
+e = some(where (p.eft == allow))
+
+[matchers]
+m = (g(r.sub, p.sub) || keyMatch(r.sub, p.sub)) && keyMatch(r.obj, p.obj) && 
keyMatch(r.act, p.act)",
+
+"policy": "p, *, /, GET
+p, admin, *, *
+g, alice, admin"
+}'
+```
+
+然后通过发送以下请求将这个插件添加到一个路由上。注意,现在不再需要添加模型/策略的详细描述。
+
+```shell
+curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: 
edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
+{
+    "plugins": {
+        "authz-casbin": {
+            "username": "user"
+        }
+    },
+    "upstream": {
+        "nodes": {
+            "127.0.0.1:1980": 1
+        },
+        "type": "roundrobin"
+    },
+    "uri": "/*"
+}'
+```
+
+**注意**: 插件路由配置比插件元数据配置有更高的优先权。因此,如果模型/策略配置存在于插件路由配置中,插件将使用它而不是元数据配置。

Review comment:
       ```suggestion
   **注意**: 
插件路由配置比插件元数据配置有更高的优先级。因此,如果插件路由配置中存在模型/策略配置,插件将优先使用插件路由的配置而不是插件元数据中的配置。
   ```

##########
File path: docs/zh/latest/plugins/authz-casbin.md
##########
@@ -0,0 +1,249 @@
+---
+title: authz-casbin
+---
+
+<!--
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+-->
+
+## 目录
+
+- [**简介**](#简介)
+- [**属性**](#属性)
+- [**元数据**](#元数据)
+- [**如何启用**](#如何启用)
+- [**测试插件**](#测试插件)
+- [**禁用插件**](#禁用插件)
+- [**示例**](#示例)
+
+## 简介
+
+`authz-casbin` 是一个基于 [Lua Casbin](https://github.com/casbin/lua-casbin/) 
的访问控制插件,该插件支持基于各种访问控制模型的授权场景。
+
+有关如何创建模型和策略的详细文档, 请参阅 [Casbin](https://casbin.org/docs/en/supported-models)。
+
+## 属性
+
+| 名称        | 类型   | 必选项| 默认值 | 有效值 | 描述                                  |
+| ----------- | ------ | ----------- | ------- | ----- | 
---------------------------|
+| model_path  | string | 必须    |         |       | Casbin 模型配置文件路径           |
+| policy_path | string | 必须    |         |       | Casbin 策略配置文件路径           |
+| model       | string | 必须    |         |       | 描述 Casbin 的模型定义            |
+| policy      | string | 必须    |         |       | 描述 Casbin 的策略定义            |
+| username    | string | 必须    |         |       | 描述请求中有可以通过访问控制的用户名 |
+
+**注意**: 在插件配置中指定 `model_path`、`policy_path` 和 `username`,或者在插件配置中指定 `model`、 
`policy` 和 `username` 来使插件生效。如果你想使用全局的 Casbin 配置,可以先在插件元数据中指定模型和策略,然后插件配置中指定 
`username`。通过这种方式可以使所有的路由共享一个配置。
+
+## 元数据
+
+| 名称        | 类型   | 必选项 | 默认值 | 有效值 | 描述                          |
+| ----------- | ------ | ----------- | ------- | -----                       |
+| model       | string | 必须    |         |       | 描述 Casbin 的模型定义     |
+| policy      | string | 必须    |         |       | 描述 Casbin 的策略定义     |

Review comment:
       Ditto.

##########
File path: docs/zh/latest/plugins/authz-casbin.md
##########
@@ -0,0 +1,249 @@
+---
+title: authz-casbin
+---
+
+<!--
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+-->
+
+## 目录
+
+- [**简介**](#简介)
+- [**属性**](#属性)
+- [**元数据**](#元数据)
+- [**如何启用**](#如何启用)
+- [**测试插件**](#测试插件)
+- [**禁用插件**](#禁用插件)
+- [**示例**](#示例)
+
+## 简介
+
+`authz-casbin` 是一个基于 [Lua Casbin](https://github.com/casbin/lua-casbin/) 
的访问控制插件,该插件支持基于各种访问控制模型的授权场景。
+
+有关如何创建模型和策略的详细文档, 请参阅 [Casbin](https://casbin.org/docs/en/supported-models)。
+
+## 属性
+
+| 名称        | 类型   | 必选项| 默认值 | 有效值 | 描述                                  |
+| ----------- | ------ | ----------- | ------- | ----- | 
---------------------------|
+| model_path  | string | 必须    |         |       | Casbin 模型配置文件路径           |
+| policy_path | string | 必须    |         |       | Casbin 策略配置文件路径           |
+| model       | string | 必须    |         |       | 描述 Casbin 的模型定义            |
+| policy      | string | 必须    |         |       | 描述 Casbin 的策略定义            |
+| username    | string | 必须    |         |       | 描述请求中有可以通过访问控制的用户名 |
+
+**注意**: 在插件配置中指定 `model_path`、`policy_path` 和 `username`,或者在插件配置中指定 `model`、 
`policy` 和 `username` 来使插件生效。如果你想使用全局的 Casbin 配置,可以先在插件元数据中指定模型和策略,然后插件配置中指定 
`username`。通过这种方式可以使所有的路由共享一个配置。
+
+## 元数据
+
+| 名称        | 类型   | 必选项 | 默认值 | 有效值 | 描述                          |
+| ----------- | ------ | ----------- | ------- | -----                       |
+| model       | string | 必须    |         |       | 描述 Casbin 的模型定义     |
+| policy      | string | 必须    |         |       | 描述 Casbin 的策略定义     |
+
+## 如何启用
+
+你可以通过使用模型/策略文件路径或直接在路由中配置模型/策略以启用插件。
+
+### 通过配置文件启用
+
+```shell
+curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: 
edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
+{
+    "plugins": {
+        "authz-casbin": {
+            "model_path": "/path/to/model.conf",
+            "policy_path": "/path/to/policy.csv",
+            "username": "user"
+        }
+    },
+    "upstream": {
+        "nodes": {
+            "127.0.0.1:1980": 1
+        },
+        "type": "roundrobin"
+    },
+    "uri": "/*"
+}'
+```
+
+这将在你第一次请求时从模型/策略文件路径中创建一个 Casbin enforcer。
+
+### 通过路由配置启用
+
+```shell
+curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: 
edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
+{
+    "plugins": {
+        "authz-casbin": {
+            "model": "[request_definition]
+            r = sub, obj, act
+
+            [policy_definition]
+            p = sub, obj, act
+
+            [role_definition]
+            g = _, _
+
+            [policy_effect]
+            e = some(where (p.eft == allow))
+
+            [matchers]
+            m = (g(r.sub, p.sub) || keyMatch(r.sub, p.sub)) && keyMatch(r.obj, 
p.obj) && keyMatch(r.act, p.act)",
+
+            "policy": "p, *, /, GET
+            p, admin, *, *
+            g, alice, admin",
+
+            "username": "user"
+        }
+    },
+    "upstream": {
+        "nodes": {
+            "127.0.0.1:1980": 1
+        },
+        "type": "roundrobin"
+    },
+    "uri": "/*"
+}'
+```
+
+这将在你第一次请求时从模型和策略描述中创建一个 Casbin enforcer。
+
+### 通过 plugin metadata 配置模型/策略
+
+首先,发送一个 `PUT` 请求,使用 Admin API 
将模型和策略配置信息添加到插件的元数据中。所有通过这种插件的方式创建的路由都会带有一个带插件元数据配置的 Casbin enforcer。同时也可以使用 
`PUT` 请求修改模型和策略配置信息,Apache APISIX 会自动读取最新的配置。

Review comment:
       ```suggestion
   首先,使用 Admin API 发送一个 `PUT` 
请求,将模型和策略配置信息添加到插件的元数据中。所有通过这种插件的方式创建的路由都会带有一个带插件元数据配置的 Casbin enforcer。同时也可以使用 
`PUT` 请求更新模型和策略配置信息,该插件将会自动同步最新的配置信息。
   ```
   > All routes configured in this way will use a single Casbin enforcer with 
plugin metadata configuration
   
   `will use a single Casbin enforcer` seems to be misunderstood

##########
File path: docs/zh/latest/plugins/authz-casbin.md
##########
@@ -0,0 +1,249 @@
+---
+title: authz-casbin
+---
+
+<!--
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+-->
+
+## 目录
+
+- [**简介**](#简介)
+- [**属性**](#属性)
+- [**元数据**](#元数据)
+- [**如何启用**](#如何启用)
+- [**测试插件**](#测试插件)
+- [**禁用插件**](#禁用插件)
+- [**示例**](#示例)
+
+## 简介
+
+`authz-casbin` 是一个基于 [Lua Casbin](https://github.com/casbin/lua-casbin/) 
的访问控制插件,该插件支持基于各种访问控制模型的授权场景。
+
+有关如何创建模型和策略的详细文档, 请参阅 [Casbin](https://casbin.org/docs/en/supported-models)。
+
+## 属性
+
+| 名称        | 类型   | 必选项| 默认值 | 有效值 | 描述                                  |
+| ----------- | ------ | ----------- | ------- | ----- | 
---------------------------|
+| model_path  | string | 必须    |         |       | Casbin 模型配置文件路径           |
+| policy_path | string | 必须    |         |       | Casbin 策略配置文件路径           |
+| model       | string | 必须    |         |       | 描述 Casbin 的模型定义            |
+| policy      | string | 必须    |         |       | 描述 Casbin 的策略定义            |
+| username    | string | 必须    |         |       | 描述请求中有可以通过访问控制的用户名 |
+
+**注意**: 在插件配置中指定 `model_path`、`policy_path` 和 `username`,或者在插件配置中指定 `model`、 
`policy` 和 `username` 来使插件生效。如果你想使用全局的 Casbin 配置,可以先在插件元数据中指定模型和策略,然后插件配置中指定 
`username`。通过这种方式可以使所有的路由共享一个配置。
+
+## 元数据
+
+| 名称        | 类型   | 必选项 | 默认值 | 有效值 | 描述                          |
+| ----------- | ------ | ----------- | ------- | -----                       |
+| model       | string | 必须    |         |       | 描述 Casbin 的模型定义     |
+| policy      | string | 必须    |         |       | 描述 Casbin 的策略定义     |
+
+## 如何启用
+
+你可以通过使用模型/策略文件路径或直接在路由中配置模型/策略以启用插件。
+
+### 通过配置文件启用
+
+```shell
+curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: 
edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
+{
+    "plugins": {
+        "authz-casbin": {
+            "model_path": "/path/to/model.conf",
+            "policy_path": "/path/to/policy.csv",
+            "username": "user"
+        }
+    },
+    "upstream": {
+        "nodes": {
+            "127.0.0.1:1980": 1
+        },
+        "type": "roundrobin"
+    },
+    "uri": "/*"
+}'
+```
+
+这将在你第一次请求时从模型/策略文件路径中创建一个 Casbin enforcer。
+
+### 通过路由配置启用
+
+```shell
+curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: 
edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
+{
+    "plugins": {
+        "authz-casbin": {
+            "model": "[request_definition]
+            r = sub, obj, act
+
+            [policy_definition]
+            p = sub, obj, act
+
+            [role_definition]
+            g = _, _
+
+            [policy_effect]
+            e = some(where (p.eft == allow))
+
+            [matchers]
+            m = (g(r.sub, p.sub) || keyMatch(r.sub, p.sub)) && keyMatch(r.obj, 
p.obj) && keyMatch(r.act, p.act)",
+
+            "policy": "p, *, /, GET
+            p, admin, *, *
+            g, alice, admin",
+
+            "username": "user"
+        }
+    },
+    "upstream": {
+        "nodes": {
+            "127.0.0.1:1980": 1
+        },
+        "type": "roundrobin"
+    },
+    "uri": "/*"
+}'
+```
+
+这将在你第一次请求时从模型和策略描述中创建一个 Casbin enforcer。
+
+### 通过 plugin metadata 配置模型/策略
+
+首先,发送一个 `PUT` 请求,使用 Admin API 
将模型和策略配置信息添加到插件的元数据中。所有通过这种插件的方式创建的路由都会带有一个带插件元数据配置的 Casbin enforcer。同时也可以使用 
`PUT` 请求修改模型和策略配置信息,Apache APISIX 会自动读取最新的配置。
+
+```shell
+curl http://127.0.0.1:9080/apisix/admin/plugin_metadata/authz-casbin -H 
'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -i -X PUT -d '
+{
+"model": "[request_definition]
+r = sub, obj, act
+
+[policy_definition]
+p = sub, obj, act
+
+[role_definition]
+g = _, _
+
+[policy_effect]
+e = some(where (p.eft == allow))
+
+[matchers]
+m = (g(r.sub, p.sub) || keyMatch(r.sub, p.sub)) && keyMatch(r.obj, p.obj) && 
keyMatch(r.act, p.act)",
+
+"policy": "p, *, /, GET
+p, admin, *, *
+g, alice, admin"
+}'
+```
+
+然后通过发送以下请求将这个插件添加到一个路由上。注意,现在不再需要添加模型/策略的详细描述。
+
+```shell
+curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: 
edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
+{
+    "plugins": {
+        "authz-casbin": {
+            "username": "user"
+        }
+    },
+    "upstream": {
+        "nodes": {
+            "127.0.0.1:1980": 1
+        },
+        "type": "roundrobin"
+    },
+    "uri": "/*"
+}'
+```
+
+**注意**: 插件路由配置比插件元数据配置有更高的优先权。因此,如果模型/策略配置存在于插件路由配置中,插件将使用它而不是元数据配置。
+
+## 测试插件
+
+我们将定义模型为:

Review comment:
       ```suggestion
   我们将定义测试鉴权模型为:
   ```

##########
File path: docs/zh/latest/plugins/authz-casbin.md
##########
@@ -0,0 +1,249 @@
+---
+title: authz-casbin
+---
+
+<!--
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+-->
+
+## 目录
+
+- [**简介**](#简介)
+- [**属性**](#属性)
+- [**元数据**](#元数据)
+- [**如何启用**](#如何启用)
+- [**测试插件**](#测试插件)
+- [**禁用插件**](#禁用插件)
+- [**示例**](#示例)
+
+## 简介
+
+`authz-casbin` 是一个基于 [Lua Casbin](https://github.com/casbin/lua-casbin/) 
的访问控制插件,该插件支持基于各种访问控制模型的授权场景。
+
+有关如何创建模型和策略的详细文档, 请参阅 [Casbin](https://casbin.org/docs/en/supported-models)。
+
+## 属性
+
+| 名称        | 类型   | 必选项| 默认值 | 有效值 | 描述                                  |
+| ----------- | ------ | ----------- | ------- | ----- | 
---------------------------|
+| model_path  | string | 必须    |         |       | Casbin 模型配置文件路径           |
+| policy_path | string | 必须    |         |       | Casbin 策略配置文件路径           |
+| model       | string | 必须    |         |       | 描述 Casbin 的模型定义            |
+| policy      | string | 必须    |         |       | 描述 Casbin 的策略定义            |
+| username    | string | 必须    |         |       | 描述请求中有可以通过访问控制的用户名 |
+
+**注意**: 在插件配置中指定 `model_path`、`policy_path` 和 `username`,或者在插件配置中指定 `model`、 
`policy` 和 `username` 来使插件生效。如果你想使用全局的 Casbin 配置,可以先在插件元数据中指定模型和策略,然后插件配置中指定 
`username`。通过这种方式可以使所有的路由共享一个配置。
+
+## 元数据
+
+| 名称        | 类型   | 必选项 | 默认值 | 有效值 | 描述                          |
+| ----------- | ------ | ----------- | ------- | -----                       |
+| model       | string | 必须    |         |       | 描述 Casbin 的模型定义     |
+| policy      | string | 必须    |         |       | 描述 Casbin 的策略定义     |
+
+## 如何启用
+
+你可以通过使用模型/策略文件路径或直接在路由中配置模型/策略以启用插件。
+
+### 通过配置文件启用
+
+```shell
+curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: 
edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
+{
+    "plugins": {
+        "authz-casbin": {
+            "model_path": "/path/to/model.conf",
+            "policy_path": "/path/to/policy.csv",
+            "username": "user"
+        }
+    },
+    "upstream": {
+        "nodes": {
+            "127.0.0.1:1980": 1
+        },
+        "type": "roundrobin"
+    },
+    "uri": "/*"
+}'
+```
+
+这将在你第一次请求时从模型/策略文件路径中创建一个 Casbin enforcer。
+
+### 通过路由配置启用
+
+```shell
+curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: 
edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
+{
+    "plugins": {
+        "authz-casbin": {
+            "model": "[request_definition]
+            r = sub, obj, act
+
+            [policy_definition]
+            p = sub, obj, act
+
+            [role_definition]
+            g = _, _
+
+            [policy_effect]
+            e = some(where (p.eft == allow))
+
+            [matchers]
+            m = (g(r.sub, p.sub) || keyMatch(r.sub, p.sub)) && keyMatch(r.obj, 
p.obj) && keyMatch(r.act, p.act)",
+
+            "policy": "p, *, /, GET
+            p, admin, *, *
+            g, alice, admin",
+
+            "username": "user"
+        }
+    },
+    "upstream": {
+        "nodes": {
+            "127.0.0.1:1980": 1
+        },
+        "type": "roundrobin"
+    },
+    "uri": "/*"
+}'
+```
+
+这将在你第一次请求时从模型和策略描述中创建一个 Casbin enforcer。
+
+### 通过 plugin metadata 配置模型/策略
+
+首先,发送一个 `PUT` 请求,使用 Admin API 
将模型和策略配置信息添加到插件的元数据中。所有通过这种插件的方式创建的路由都会带有一个带插件元数据配置的 Casbin enforcer。同时也可以使用 
`PUT` 请求修改模型和策略配置信息,Apache APISIX 会自动读取最新的配置。
+
+```shell
+curl http://127.0.0.1:9080/apisix/admin/plugin_metadata/authz-casbin -H 
'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -i -X PUT -d '
+{
+"model": "[request_definition]
+r = sub, obj, act
+
+[policy_definition]
+p = sub, obj, act
+
+[role_definition]
+g = _, _
+
+[policy_effect]
+e = some(where (p.eft == allow))
+
+[matchers]
+m = (g(r.sub, p.sub) || keyMatch(r.sub, p.sub)) && keyMatch(r.obj, p.obj) && 
keyMatch(r.act, p.act)",
+
+"policy": "p, *, /, GET
+p, admin, *, *
+g, alice, admin"
+}'
+```
+
+然后通过发送以下请求将这个插件添加到一个路由上。注意,现在不再需要添加模型/策略的详细描述。
+
+```shell
+curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: 
edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
+{
+    "plugins": {
+        "authz-casbin": {
+            "username": "user"
+        }
+    },
+    "upstream": {
+        "nodes": {
+            "127.0.0.1:1980": 1
+        },
+        "type": "roundrobin"
+    },
+    "uri": "/*"
+}'
+```
+
+**注意**: 插件路由配置比插件元数据配置有更高的优先权。因此,如果模型/策略配置存在于插件路由配置中,插件将使用它而不是元数据配置。
+
+## 测试插件
+
+我们将定义模型为:
+
+```conf
+[request_definition]
+r = sub, obj, act
+
+[policy_definition]
+p = sub, obj, act
+
+[role_definition]
+g = _, _
+
+[policy_effect]
+e = some(where (p.eft == allow))
+
+[matchers]
+m = (g(r.sub, p.sub) || keyMatch(r.sub, p.sub)) && keyMatch(r.obj, p.obj) && 
keyMatch(r.act, p.act)
+```
+
+并应用该策略:

Review comment:
       ```suggestion
   并添加测试鉴权策略:
   ```




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to