身份验证触发器
Realm 现已更名为 Atlas Device SDK – 了解详情
当用户与身份验证提供程序交互时,会触发身份验证触发器。 您可以使用身份验证触发器来实施高级用户管理。部分用途包括:
在关联集群中存储新用户数据
在删除用户时保持数据完整性
在用户登录时使用用户信息调用服务。
创建身份验证触发器
配置
身份验证触发器具有以下配置选项:
身份验证事件
身份验证事件表示用户与身份验证提供者的交互。每个事件对应具有以下操作类型之一的单个用户操作:
操作类型 | 说明 |
---|---|
LOGIN | 表示用户登录的单个实例。 |
CREATE | 表示创建新用户。 |
DELETE | 表示删除用户。 |
身份验证事件对象具有以下形式:
{ "operationType": <string>, "providers": <array of strings>, "user": <user object>, "time": <ISODate> }
例子
一家在线商店希望在Atlas中存储每个客户的自定义元数据。每个客户都需要store.customers
集合中的一个文档。然后,商店可以在客户文档中记录和查询元数据。
该集合必须代表每个客户。为保证这一点,商店创建了身份验证触发器。此触发器侦听电子邮件/密码身份验证提供程序中新创建的用户。然后,它将身份验证事件对象传递给其链接函数createNewUserDocument
。该函数创建一个描述用户及其活动的新文档。然后,该函数将该文档插入到store.customers
集合中。
createNewUserDocument
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); }
其他示例
有关集成到 App Services App 中的触发器的其他示例,请 查看 Github 上的示例触发器。