使用会话数据

可以使用 session.*,Captcha,PasswordValidateJwtMake,JwtValidate等处理器,实现自定义用户登录、用户身份鉴权。

可以在数据流、JS编写的处理器和数据表格中使用登录时候,设置的会话数据。

账号密码登录

账号密码登录流程:

  1. 用户在登录页面,填写账号名称、验证码和密码,点击按钮提交到指定 API。

  2. API 接收账号名和密码信息,转交指定的处理器,校验密码,签发 JWT 令牌。

处理器密码校验逻辑:

  1. 调用 CaptchaValidate 处理器,校验验证码。

  2. 调用数据模型处理器,通过账号名称查询用户数据记录,获得加密存储的密码信息。

  3. 调用 PasswordValidate 处理器,校验用户填写密码是否正确。

  4. 签发 JWT 令牌,设定会话信息。

第一步: 用户数据模型

编写 user.mod.json 放置在应用 models 目录。

查看源码

创建数据表 & 添加默认用户:

yao migrate -n user

第二步: 登录处理器

编写 password.flow.jsontoken.flow.json 放置在应用 flows/login/ 目录。 分别实现密码校验逻辑和签发 JWT 令牌逻辑。

查看源码
技巧:将密码校验签发令牌拆分为两个处理器,签发令牌处理器可以在OAuth第三方登录、短信验证码登录等场景下复用。

运行处理器调试:

技巧: 为便于调试,可在登录逻辑调试成功后,添加验证码校验节点。
注意:由于一些历史原因, yao 内建的登录界面登录提交信息中,用户字段名称固定为mobile, 在后续的版本中将允许在应用描述文件中定义。
yao run flows.login.password '::{"mobile":"zhang@yaoapps.com", "password": "5MCIXQYrR"}'

第三步: 登录 API

编写接口描述文件 user.http.json,添加 /captcha/login/password 两个接口,分别用于验证码图片和用户名密码登录接口,放置在应用的 api 目录中。

描述文件内容:

查看源码

接口调试:

启动服务:

yao start

读取验证码接口:

curl http://127.0.0.1:5099/api/user/captcha
技巧:设置环境变量开启 debug mode , 发起请求后,可以在服务日志中查看验证码 id 和 code, 用于调试。

登录接口:

curl -X POST http://127.0.0.1:5099/api/user/login/password \
-H 'Content-Type: application/json' \
-d '{"mobile":"zhang@yaoapps.com", "password": "5MCIXQYrR", "captcha":{"id":1024, "code":"xv98"}}'

第四步: 应用描述

编辑 app.json 设置用户登录 API。登录界面路由为 /xiang/login/user/:is , is 为自定义变量,随登录表单一并提交给登录接口,用来识别用户来源,一般用于多租户系统。

{
"name": "象传应用",
"short": "象传",
"description": "象传应用后台",
"option": {
"nav_user": "xiang.user",
"nav_menu": "menu",
"hide_user": true,
"hide_menu": true,
"login": {
"password": {
"captcha": "/api/xiang/user/captcha",
"login": "/api/user/login/password"
}
}
}
}

使用会话数据

用户成功登录设定的会话数据,可以在数据流, JS 脚本和数据表格中使用。

在数据流中使用

编写 inspect.flow.json 放置在应用 flows/user/ 目录。

{
"label": "当前用户信息",
"version": "1.0.0",
"description": "当前用户信息",
"nodes": [
{
"name": "会话",
"process": "session.Get",
"args": ["user"]
}
],
"output": "{{$res.会话}}"
}

运行调试:

启动服务,开启调试模式:

yao start --debug

新建一个命令控制台:

注意:启用 run@ 命令,需开启调试模式或将环境变量XIANG_REMOTE_RUN设置为IP白名单。 例如: XIANG_REMOTE_RUN=127.0.0.1
yao run@127.0.0.1:5099 login
yao run@127.0.0.1:5099 flows.user.inspect

在 JS 脚本中使用

编写 user.js 放置在应用 scripts 目录。

function Inspect() {
return Process("session.Get", "user");
}
yao run@127.0.0.1:5099 login
yao run@127.0.0.1:5099 scripts.user.Inspect

在数据表格中使用

可直接在数据表格 apis.*.default 中引用会话变量。

查看源码

使用会话数据

可以使用 session.*,Captcha,PasswordValidateJwtMake,JwtValidate等处理器,实现自定义用户登录、用户身份鉴权。

可以在数据流、JS编写的处理器和数据表格中使用登录时候,设置的会话数据。

账号密码登录

账号密码登录流程:

  1. 用户在登录页面,填写账号名称、验证码和密码,点击按钮提交到指定 API。

  2. API 接收账号名和密码信息,转交指定的处理器,校验密码,签发 JWT 令牌。

处理器密码校验逻辑:

  1. 调用 CaptchaValidate 处理器,校验验证码。

  2. 调用数据模型处理器,通过账号名称查询用户数据记录,获得加密存储的密码信息。

  3. 调用 PasswordValidate 处理器,校验用户填写密码是否正确。

  4. 签发 JWT 令牌,设定会话信息。

第一步: 用户数据模型

编写 user.mod.json 放置在应用 models 目录。

查看源码

创建数据表 & 添加默认用户:

yao migrate -n user

第二步: 登录处理器

编写 password.flow.jsontoken.flow.json 放置在应用 flows/login/ 目录。 分别实现密码校验逻辑和签发 JWT 令牌逻辑。

查看源码
技巧:将密码校验签发令牌拆分为两个处理器,签发令牌处理器可以在OAuth第三方登录、短信验证码登录等场景下复用。

运行处理器调试:

技巧: 为便于调试,可在登录逻辑调试成功后,添加验证码校验节点。
注意:由于一些历史原因, yao 内建的登录界面登录提交信息中,用户字段名称固定为mobile, 在后续的版本中将允许在应用描述文件中定义。
yao run flows.login.password '::{"mobile":"zhang@yaoapps.com", "password": "5MCIXQYrR"}'

第三步: 登录 API

编写接口描述文件 user.http.json,添加 /captcha/login/password 两个接口,分别用于验证码图片和用户名密码登录接口,放置在应用的 api 目录中。

描述文件内容:

查看源码

接口调试:

启动服务:

yao start

读取验证码接口:

curl http://127.0.0.1:5099/api/user/captcha
技巧:设置环境变量开启 debug mode , 发起请求后,可以在服务日志中查看验证码 id 和 code, 用于调试。

登录接口:

curl -X POST http://127.0.0.1:5099/api/user/login/password \
-H 'Content-Type: application/json' \
-d '{"mobile":"zhang@yaoapps.com", "password": "5MCIXQYrR", "captcha":{"id":1024, "code":"xv98"}}'

第四步: 应用描述

编辑 app.json 设置用户登录 API。登录界面路由为 /xiang/login/user/:is , is 为自定义变量,随登录表单一并提交给登录接口,用来识别用户来源,一般用于多租户系统。

{
"name": "象传应用",
"short": "象传",
"description": "象传应用后台",
"option": {
"nav_user": "xiang.user",
"nav_menu": "menu",
"hide_user": true,
"hide_menu": true,
"login": {
"password": {
"captcha": "/api/xiang/user/captcha",
"login": "/api/user/login/password"
}
}
}
}

使用会话数据

用户成功登录设定的会话数据,可以在数据流, JS 脚本和数据表格中使用。

在数据流中使用

编写 inspect.flow.json 放置在应用 flows/user/ 目录。

{
"label": "当前用户信息",
"version": "1.0.0",
"description": "当前用户信息",
"nodes": [
{
"name": "会话",
"process": "session.Get",
"args": ["user"]
}
],
"output": "{{$res.会话}}"
}

运行调试:

启动服务,开启调试模式:

yao start --debug

新建一个命令控制台:

注意:启用 run@ 命令,需开启调试模式或将环境变量XIANG_REMOTE_RUN设置为IP白名单。 例如: XIANG_REMOTE_RUN=127.0.0.1
yao run@127.0.0.1:5099 login
yao run@127.0.0.1:5099 flows.user.inspect

在 JS 脚本中使用

编写 user.js 放置在应用 scripts 目录。

function Inspect() {
return Process("session.Get", "user");
}
yao run@127.0.0.1:5099 login
yao run@127.0.0.1:5099 scripts.user.Inspect

在数据表格中使用

可直接在数据表格 apis.*.default 中引用会话变量。

查看源码