# context 对象

'context 对象中保存了当前认证流程的上下文,包括认证手段、身份提供方,以及请求 IP, 地址等。'

# 属性

属性名 类型 说明
protocol string 认证协议。具体说明见下文。
connection string 身份提供方。具体说明见下文。
userPoolId string 用户池 ID
userPoolName string 用户池 名称
userPoolMetadata object 用户池配置
request object 当前请求的详细信息,包括:
ip: 客户端 IP
geo: 通过 IP 解析的客户端地理位置
body: 请求体

# protocol

认证协议。

可能值 说明
password 基于账号密码的认证方式
sms 基于短信验证码的认证方式
social 社会化登录认证默认,当使用 Authing 集成的社会化登录手段登录时为此值。
ldap 使用 LDAP 进行认证。有关如何接入 LDAP 请见 配置 LDAP 服务
saml 使用 SAML 进行认证。有关如何接入 SAML 请见 接入 SAML
oidc 使用 OIDC 协议认证。有关如何接入 OIDC 请见使用 OIDC 授权

# connection

身份提供方。

可能值 说明
ldap:<LDAP服务ID> 使用 lDAP 协议进行登录。 一个 Authing LDAP 服务对应一个 Authing 用户目录或第三方用户目录,详情请见 配置 LDAP服务使用 Authing 的 LDAP 用户目录
saml:<SAML Idp 服务 ID> 使用 SAML 协议进行登录。有关如何接入 SAML 请见 接入 SAML
oidc:<OIDC 应用 ID> 使用 OIDC 协议认证。有关如何接入 OIDC 请见 使用 OIDC 授权
github 使用 GitHub 登录。详情见 接入 GitHub 登录

wechat

微信 PC 扫码登录。详情见 接入微信 PC 扫码登录
wechat:miniprogram 使用微信小程序登录。详情见 接入微信小程序登录
wechatwork 使用微信公众号网页授权登录。详情见 接入微信公众号网页授权登录
qq 使用 QQ 网页版登录。详情见 接入 QQ 登录
weibo 使用微博网页版登录。详情见 接入微博登录
dingtalk 使用钉钉网页版登录。详情见 接入钉钉登录
alipay 使用支付宝 APP 登录。详情见 接入移动 APP 支付宝登录

# data 对象

# 注册前、注册后

注册前、注册后 Pipeline 中 data 对象部分请求字段如下:详情请见 Authing GraphQL 调试器 (opens new window) 用户鉴权 - 注册接口。

email, phone, unionid 等字段不一定同时存在,使用前请先判断其是否存在!如

const email = context.request.body.email;
if (email) {
  // 表示是用邮箱注册
  // 可以进行邮箱注册白名单的逻辑

  if (!email.endsWith("example.com")) {
    return callback(new Error("Access Denied!"));
  }
}
字段名 类型 是否一定存在 说明
username string 用户名,使用用户名注册的时候不为空。
email string 邮箱,使用用户名注册的时候不为空。
phone string 手机号,使用手机号注册的时候不为空。
forceLogin boolean 注册时候是否自动进行登录流程,默认为 false
profile object 用户注册所填的数据用户信息

# 认证前、认证后

认证前、认证后 Pipeline 中 data 对象部分请求字段如下:

这些字段不一定全部存在,使用前请先判断是否存在!

字段名 类型 是否一定存在 说明
username string 用户名,使用用户名登录的时候不为空。
email string 邮箱,使用邮箱登录的时候不为空。
phone string 手机号,使用手机号登录的时候不为空。

# userPool 对象

字段名 类型 说明
id string 用户池 ID
name string 用户池名称

# geo 属性

示例数据:

{
  "province": "北京市",
  "city": "北京市",
  "adcode": "110000",
  "rectangle": "116.0119343,39.66127144;116.7829835,40.2164962"
}