身份验证触发器
Atlas Device Sync 、 Atlas Edge Server 、 Data API和HTTPS endpoints均已弃用。 有关详细信息,请参阅弃用页面。
触发器文档正在转移到 Atlas 文档。请在新位置新位置参阅触发器文档。
当用户与身份验证提供程序交互时,会触发身份验证触发器。 您可以使用身份验证触发器来实施高级用户管理。部分用途包括:
在关联集群中存储新用户数据
在删除用户时保持数据完整性
在用户登录时使用用户信息调用服务。
创建身份验证触发器
要在trigger 用户界面中打开身份验证Atlas App Services 配置屏幕,请单击左侧导航菜单中的Triggers Create a TriggerAuthentication,单击 ,然后选择 旁边的Trigger Type 标签页。
配置触发器,然后单击页面底部的 Save,将其添加到当前部署草稿中。
点击放大
要使用 创建身份验证trigger App Services CLI:
配置
身份验证触发器具有以下配置选项:
身份验证事件
身份验证事件表示用户与身份验证提供者的交互。每个事件对应具有以下操作类型之一的单个用户操作:
操作类型 | 说明 |
---|---|
LOGIN | 表示用户登录的单个实例。 |
CREATE | 表示创建新用户。 |
DELETE | 表示删除用户。 |
身份验证事件对象具有以下形式:
{ "operationType": <string>, "providers": <array of strings>, "user": <user object>, "time": <ISODate> }
例子
一家在线存储希望在Atlas中存储每个客户的自定义元数据。 每个客户都需要store.customers
集合中的一个文档。 然后,存储可以在客户文档中记录和查询元数据。
该集合必须代表每个客户。 为保证这一点,存储创建了一个身份验证trigger 。 此trigger侦听电子邮件/密码身份验证提供者中新创建的用户。 然后,它将身份验证事件对象传递给其链接函数createNewUserDocument
。 该函数创建一个描述用户及其活动的新文档。 然后,该函数将该文档插入到store.customers
集合中。
触发器配置
{ "type": "AUTHENTICATION", "name": "newUserHandler", "function_name": "createNewUserDocument", "config": { "providers": ["local-userpass"], "operation_type": "CREATE" }, "disabled": false }
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上的示例触发器。