Esta documentação foi traduzida automaticamente por IA.
O NocoBase permite que você estenda os tipos de autenticação de usuário conforme a sua necessidade. Geralmente, a autenticação de usuário se divide em dois tipos: um em que a identidade do usuário é verificada dentro do próprio aplicativo NocoBase (como login por senha, login por SMS, etc.); e outro em que serviços de terceiros verificam a identidade do usuário e notificam o aplicativo NocoBase do resultado através de callbacks (como métodos de autenticação OIDC, SAML, etc.). O processo de autenticação para esses dois tipos diferentes no NocoBase é basicamente o seguinte:
api.auth.signIn(), solicitando a interface de login auth:signIn. Ao mesmo tempo, ele envia o identificador do autenticador em uso no cabeçalho da requisição X-Authenticator para o backend.auth:signIn, com base no identificador do autenticador presente no cabeçalho da requisição, encaminha a solicitação para o tipo de autenticação correspondente. O método validate da classe de autenticação registrada para esse tipo então realiza o processamento lógico adequado.token de autenticação da resposta da interface auth:signIn, salva o token no Local Storage e conclui o login. Esta etapa é tratada automaticamente internamente pelo SDK.
auth:getAuthUrl), e envia informações como o nome do aplicativo e o identificador do autenticador, conforme o protocolo.auth:redirect), retorna o resultado da autenticação e também o nome do aplicativo, o identificador do autenticador, entre outras informações.AuthManager, e o método auth.signIn() é chamado ativamente. O método auth.signIn() por sua vez chamará o método validate() para lidar com a lógica de autenticação.token de autenticação, ele redireciona (com status 302) de volta para a página do frontend, levando o token e o identificador do autenticador nos parâmetros da URL, como ?authenticator=xxx&token=yyy.
A seguir, vamos explicar como registrar interfaces do lado do servidor e interfaces de usuário do lado do cliente.
O kernel do NocoBase oferece o registro e o gerenciamento para estender os tipos de autenticação. Para implementar a lógica central de um plugin de login estendido, você precisa herdar a classe abstrata Auth do kernel e implementar as interfaces padrão correspondentes.
Para a API completa, consulte Auth.
O kernel também registra operações básicas de recursos relacionadas à autenticação de usuário.
| API | Descrição |
|---|---|
auth:check | Verifica se o usuário está logado |
auth:signIn | Fazer login |
auth:signUp | Registrar |
auth:signOut | Sair da conta |
Na maioria dos casos, os tipos de autenticação de usuário estendidos podem reutilizar a lógica de autenticação JWT existente para gerar credenciais de acesso à API para o usuário. A classe BaseAuth no kernel oferece uma implementação básica da classe abstrata Auth. Consulte BaseAuth. Os plugins podem herdar diretamente a classe BaseAuth para reutilizar parte do código lógico e reduzir os custos de desenvolvimento.
Ao implementar a lógica de autenticação de usuário, geralmente há o tratamento de dados do usuário. Em um aplicativo NocoBase, as coleções relacionadas são definidas por padrão da seguinte forma:
| Coleções | Descrição | Plugin |
|---|---|---|
users | Armazena informações do usuário, como e-mail, apelido e senha | Plugin de Usuário (@nocobase/plugin-users) |
authenticators | Armazena informações do autenticador (entidade do tipo de autenticação), correspondendo ao tipo e configuração | Plugin de Autenticação de Usuário (@nocobase/plugin-auth) |
usersAuthenticators | Associa usuários e autenticadores, salva informações do usuário sob o autenticador correspondente | Plugin de Autenticação de Usuário (@nocobase/plugin-auth) |
Geralmente, para métodos de login estendidos, você pode usar as coleções users e usersAuthenticators para armazenar os dados do usuário. Apenas em casos especiais será necessário adicionar uma nova coleção.
Os principais campos de usersAuthenticators são:
| Campo | Descrição |
|---|---|
uuid | Identificador único do usuário para este tipo de autenticação, como número de telefone ou ID de usuário de serviço de terceiros |
meta | Campo JSON, outras informações a serem salvas |
userId | ID do usuário |
authenticator | Nome do autenticador (identificador único) |
Para operações de consulta e criação de usuários, o modelo de dados AuthModel dos authenticators também encapsula vários métodos que podem ser usados na classe CustomAuth através de this.authenticator[nomeDoMetodo]. Para a API completa, consulte AuthModel.
O método de autenticação estendido precisa ser registrado no módulo de gerenciamento de autenticação.
A interface de usuário do cliente é registrada através da interface registerType fornecida pelo cliente do plugin de autenticação de usuário:

Se vários autenticadores, correspondentes a diferentes tipos de autenticação, tiverem formulários de login registrados, eles serão exibidos em formato de abas (Tabs). O título da aba será o título do autenticador configurado no painel administrativo.


Geralmente é um botão de login de terceiros, mas pode ser qualquer componente.

Se você precisar navegar da página de login para a página de registro, precisará lidar com isso por conta própria no componente de login.

A parte superior mostra a configuração genérica do autenticador, e a parte inferior é a seção do formulário de configuração personalizada que pode ser registrada.
Para iniciar requisições de interfaces relacionadas à autenticação de usuário no lado do cliente, você pode usar o SDK fornecido pelo NocoBase.
Para referências detalhadas da API, consulte @nocobase/sdk - Auth.