context 对象
context 对象中保存了当前认证流程的上下文,包括认证手段、身份提供方,以及请求 IP, 地址等。
属性
| 属性名 | 类型 | 说明 |
|---|---|---|
| protocol | string | 认证协议。具体说明见下文。 |
| connection | string | 身份提供方。具体说明见下文。 |
| userPoolId | string | 用户池 ID |
| userPoolName | string | 用户池 名称 |
| userPoolMetadata | object | 用户池配置 |
| appId | string | 当前用户的 ID |
| appName | string | 当前应用的 名称 |
| appMetadata | object | 当前应用的配置信息 |
| request | object | 当前请求的详细信息,包括: ip: 客户端 IP geo: 通过 IP 解析的客户端地理位置 body: 请求体 query: query string 对象,你可以通过 request.query.xxx 获取对应 query 参数 |
| accessTokenTarget | Enum: programmaticAccount, user | 仅在签发 accessToken 前的 pipeline 中有值,表示当前是为编程访问账号还是用户签发 accessToken |
protocol
认证协议。
| 可能值 | 说明 |
|---|---|
| password | 基于账号密码的认证方式 |
| sms | 基于短信验证码的认证方式 |
| social | 社会化登录认证默认,当使用 GenAuth 集成的社会化登录手段登录时为此值。 |
| ldap | 使用 LDAP 进行认证。有关如何接入 LDAP 请见 配置 LDAP 服务。 |
| saml | 使用 SAML 进行认证。有关如何接入 SAML 请见 接入 SAML。 |
| oidc | 使用 OIDC 协议认证。有关如何接入 OIDC 请见使用 OIDC 授权。 |
connection
身份提供方。
可能值 说明 ldap 使用 lDAP 协议进行登录。 一个 GenAuth LDAP 服务对应一个 GenAuth 用户目录或第三方用户目录,详情请见 配置 LDAP 服务 和 使用 GenAuth 的 LDAP 用户目录。 saml 使用 SAML 协议进行登录。有关如何接入 SAML 请见 接入 SAML。 oidc 使用 OIDC 协议认证。有关如何接入 OIDC 请见 使用 OIDC 授权。 github 使用 GitHub 登录。详情见 接入 GitHub 登录。 wechat PC 微信扫码登录。详情见 接入 PC 微信扫码登录。 wechat:miniprogram 使用微信小程序登录。详情见 接入微信小程序登录。 wechatwork 使用企业微信登录。 qq 使用 QQ 网页版登录。详情见 接入 QQ 登录。 weibo 使用微博网页版登录。详情见 接入微博登录。 dingtalk 使用钉钉网页版登录。详情见 接入钉钉登录。 alipay 使用支付宝 APP 登录。详情见 接入移动 APP 支付宝登录 。
data 对象
注册前、注册后
注册前、注册后 Pipeline 中 data 对象部分请求字段如下:详情请见 GenAuth GraphQL 调试器 用户鉴权 - 注册接口。
WARNING
email, phone, unionid 等字段不一定同时存在,使用前请先判断其是否存在!如
js
const email = context.request.body.email;
if (email) {
// 表示是用邮箱注册
// 可以进行邮箱注册白名单的逻辑
if (!email.endsWith("example.com")) {
return callback(new Error("Access Denied!"));
}
}| 字段名 | 类型 | 是否一定存在 | 说明 |
|---|---|---|---|
| username | string | 否 | 用户名,使用用户名注册的时候不为空。 |
| string | 否 | 邮箱,使用用户名注册的时候不为空。 | |
| phone | string | 否 | 手机号,使用手机号注册的时候不为空。 |
| forceLogin | boolean | 否 | 注册时候是否自动进行登录流程,默认为 false |
| profile | object | 是 | 用户注册所填的数据用户信息 |
认证前、认证后
认证前、认证后 Pipeline 中 data 对象部分请求字段如下:
WARNING
这些字段不一定全部存在,使用前请先判断是否存在!
| 字段名 | 类型 | 是否一定存在 | 说明 |
|---|---|---|---|
| username | string | 否 | 用户名,使用用户名登录的时候不为空。 |
| string | 否 | 邮箱,使用邮箱登录的时候不为空。 | |
| phone | string | 否 | 手机号,使用手机号登录的时候不为空。 |
userPool 对象
用户池相关信息。
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | string | 用户池 ID |
| name | string | 用户池名称 |
geo 属性
示例数据:
json
{
"province": "北京市",
"city": "北京市",
"adcode": "110000",
"rectangle": "116.0119343,39.66127144;116.7829835,40.2164962"
}