接口鉴权

接口鉴权支持自定义编写接口鉴权和使用系统自带 bearer-jwt的鉴权,使用guard关键字来指定鉴权的处理器,可以在 http接口中使用,也可以在tableform中使用

参数列表:

参数名称说明
path请求的路径
params请求 url 参数
query查询参数
payloadPOST 请求参数
headers请求头部

在自定义的 HTTP 接口中使用

首先我们自定义一个鉴权的方法/scripts/guard.js

/**
* 字段验证guard
* @param {*} path
* @param {*} params
* @param {*} query
* @param {*} payload
* @param {*} headers
* @returns
*/
function Validate(path, params, query, payload, headers) {
console.log([path, params, query, payload, headers]);
if (!payload.name) {
throw new Exception("名称不能为空!", 400);
}
var exists = Process("models.product.get", {
wheres: [{ column: "name", value: payload.name }],
});
if (exists && exists.length > 0) {
throw new Exception("名称已经存在", 400);
}
return;
}

/apis/product.http.yao增加一条路由,使用 curl 的时候会提示 {"code":400,"message":"名称不能为空!"}

{
"path": "/validate",
"guard": "scripts.guard.Validate",
"method": "POST",
"process": "models.product.Save",
"in": [":payload"],
"out": { "status": 200, "type": "application/json" }
}
curl --location --request POST 'http://127.0.0.1:5099/api/product/validate'

在 TABLE 和 FORM 使用

/tables/product.tab.yao/forms/product.form.yao中加入:

"action": {
"bind": { "model": "product" },
"save": {
"guard": "scripts.guard.Validate"
}
}

修改列表的名称字段为空,然后点击提交: guard

接口鉴权

接口鉴权支持自定义编写接口鉴权和使用系统自带 bearer-jwt的鉴权,使用guard关键字来指定鉴权的处理器,可以在 http接口中使用,也可以在tableform中使用

参数列表:

参数名称说明
path请求的路径
params请求 url 参数
query查询参数
payloadPOST 请求参数
headers请求头部

在自定义的 HTTP 接口中使用

首先我们自定义一个鉴权的方法/scripts/guard.js

/**
* 字段验证guard
* @param {*} path
* @param {*} params
* @param {*} query
* @param {*} payload
* @param {*} headers
* @returns
*/
function Validate(path, params, query, payload, headers) {
console.log([path, params, query, payload, headers]);
if (!payload.name) {
throw new Exception("名称不能为空!", 400);
}
var exists = Process("models.product.get", {
wheres: [{ column: "name", value: payload.name }],
});
if (exists && exists.length > 0) {
throw new Exception("名称已经存在", 400);
}
return;
}

/apis/product.http.yao增加一条路由,使用 curl 的时候会提示 {"code":400,"message":"名称不能为空!"}

{
"path": "/validate",
"guard": "scripts.guard.Validate",
"method": "POST",
"process": "models.product.Save",
"in": [":payload"],
"out": { "status": 200, "type": "application/json" }
}
curl --location --request POST 'http://127.0.0.1:5099/api/product/validate'

在 TABLE 和 FORM 使用

/tables/product.tab.yao/forms/product.form.yao中加入:

"action": {
"bind": { "model": "product" },
"save": {
"guard": "scripts.guard.Validate"
}
}

修改列表的名称字段为空,然后点击提交: guard