身份验证触发器
自2024 9 月起, Atlas Device SDK 已弃用,并将于 9 月2025终止生命周期。 这将影响身份验证触发器,因为它们将不再有身份验证事件需要React 。
trigger当用户与 身份验证提供者 交互时,会触发身份验证 。您可以使用身份验证触发器来实现高级用户管理。 部分用途包括:
在关联集群中存储新用户数据。
在用户删除时保持数据完整性。
在用户登录时使用用户信息调用服务。
配置
身份验证触发器具有以下配置选项:
字段 | 说明 |
---|---|
Trigger Type | trigger的类型。 对于身份验证触发器,请将此值设立为 |
Trigger Name | 触发器名称。 |
Linked Function | |
Operation Type | |
Providers | 一个或多个身份验证提供者类型的列表。 trigger仅侦听这些提供程序生成的身份验证事件。 |
身份验证事件
身份验证事件表示用户与身份验证提供者的交互。每个事件对应具有以下操作类型之一的单个用户操作:
操作类型 | 说明 |
---|---|
| 表示用户登录的单个实例。 |
| 表示创建新用户。 |
| 表示删除用户。 如果已删除的用户已链接到多个提供程序,则该用户的 |
身份验证事件对象具有以下形式:
{ "operationType": <string>, "providers": <array of strings>, "user": <user object>, "time": <ISODate> }
字段 | 说明 |
---|---|
| |
| 发出该事件的身份验证提供者。 以下名称之一代表每个身份验证提供者:
|
| 与身份验证提供者交互的用户的用户对象。 |
| 事件发生的时间。 |
例子
一家在线存储希望在Atlas中存储每个客户的自定义元数据。 每个客户都需要store.customers
集合中的一个文档。 然后,存储可以在客户文档中记录和查询元数据。
该集合必须代表每个客户。 为保证这一点,存储创建了一个身份验证trigger 。 此trigger侦听电子邮件/密码身份验证提供者中新创建的用户,然后将身份验证事件对象传递给其链接的函数 createNewUserDocument
。
createNewUserDocument
函数会创建一个描述用户及其活动的新文档。 然后,该函数将该文档插入到store.customers
集合中。
exports = async function(authEvent) { const mongodb = context.services.get("mongodb-atlas"); const customers = mongodb.db("store").collection("customers"); const { user, time } = authEvent; const isLinkedUser = user.identities.length > 1; if(isLinkedUser) { const { identities } = user; return users.updateOne( { id: user.id }, { $set: { identities } } ) } else { return users.insertOne({ _id: user.id, ...user }) .catch(console.error) } await customers.insertOne(newUser); }