Gatilhos de autenticação
Nesta página
Um trigger de autenticação é acionado quando um usuário interage com um provedor de autenticação. Você pode usar trigger de autenticação para implementar o gerenciamento avançado de usuários. Alguns usos incluem:
Armazenando novos dados de usuário em seu cluster vinculado
Manutenção da integridade dos dados após a exclusão do usuário
Chamando um serviço com as informações de um usuário quando ele faz login.
Criar um trigger de autenticação
Para abrir a tela de configuração do trigger de autenticação na interface do usuário do Atlas App Services , clique em Triggers no menu de navegação esquerdo, clique em Create a Trigger e selecione a guia Authentication ao lado de Trigger Type.
Configure o trigger e clique em Save na parte inferior da página para adicioná-lo ao esquema de implantação atual.
Para criar um trigger de autenticação com o App Services CLI:
Adicione um arquivo de configuração do trigger de autenticação ao subdiretório
triggers
de um diretório de aplicação local.Observação
O App Services não impõe nomes de arquivo específicos para arquivos de configuração do Atlas trigger . No entanto, depois de importado, o App Services renomeará cada arquivo de configuração para corresponder ao nome do trigger que ele define, por exemplo
mytrigger.json
.Implante o trigger:
appservices push
Configuração
Os triggers de autenticação têm as seguintes opções de configuração:
Campo | Descrição |
---|---|
Trigger Type | O tipo do trigger. Para trigger de autenticação, defina este valor como AUTHENTICATION . |
Action Type | O tipo de operação de autenticação que faz o trigger ser disparado. |
Providers | Uma lista de um ou mais tipos de provedor de autenticação . O trigger escuta apenas eventos de autenticação produzidos por esses fornecedores. |
Event Type | Escolha qual ação será executada quando o trigger for acionado. Você pode optar por executar uma função ou usar AWS Eventbridge. |
Function | O nome da função que o trigger executa quando é disparado. Um objeto de evento de autenticação faz com que o trigger seja acionado. Este objeto é o único argumento que o trigger passa para a função. |
Trigger Name | O nome do trigger. |
evento de autenticação
Os evento de autenticação representam interações do usuário com um provedor de autenticação. Cada evento corresponde a uma única ação do usuário com um dos seguintes tipos de operação:
Tipo de operação | Descrição |
---|---|
LOGIN | Representa uma única instância de um usuário que faz login. |
CREATE | Representa a criação de um novo usuário. |
DELETE | Representa a exclusão de um usuário. |
Objetos de evento de autenticação têm o seguinte formulário:
{ "operationType": <string>, "providers": <array of strings>, "user": <user object>, "time": <ISODate> }
Campo | Descrição |
---|---|
operationType | O tipo de operação do evento de autenticação. |
providers | Os provedor de autenticação que emitiram o evento. Um dos seguintes nomes representa cada fornecedor de autenticação:
ObservaçãoGeralmente, apenas um fornecedor de autenticação emite cada evento. No entanto, talvez seja necessário excluir um usuário vinculado a vários fornecedores. Neste caso, o evento |
user | O objeto de usuário do usuário que interagiu com o provedor de autenticação. |
time | A hora em que o evento ocorreu. |
Exemplo
Uma loja online deseja armazenar metadados personalizados para cada um de seus clientes no Atlas. Cada cliente precisa de um documento na coleção store.customers
. Em seguida, a loja pode gravar e consultar metadados no documento do cliente.
A coleção deve representar cada cliente. Para garantir isso, a loja cria um trigger de autenticação. Esse trigger escuta usuários recém-criados no provedor de autenticação de e- mail/senha . Em seguida, ele passa o objeto de evento de autenticação para sua função vinculada, createNewUserDocument
. A função cria um novo documento que descreve o usuário e sua atividade. A função então insere o documento na collection store.customers
.
{ "type": "AUTHENTICATION", "name": "newUserHandler", "function_name": "createNewUserDocument", "config": { "providers": ["local-userpass"], "operation_type": "CREATE" }, "disabled": false }
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); }
Exemplos adicionais
Para obter exemplos adicionais de Triggers integrados a um App Services App, confira o exemplo de Triggers no Github.