Уведомление о переводе ИИ

Эта документация была автоматически переведена ИИ.

AuthManager

Обзор

AuthManager — это модуль управления аутентификацией пользователей в NocoBase, предназначенный для регистрации различных типов аутентификации.

Базовое использование

const authManager = new AuthManager({
  // Используется для получения идентификатора текущего аутентификатора из заголовка запроса
  authKey: 'X-Authenticator',
});

// Устанавливает методы для хранения и получения аутентификаторов в AuthManager
authManager.setStorer({
  get: async (name: string) => {
    return db.getRepository('authenticators').find({ filter: { name } });
  },
});

// Регистрирует тип аутентификации
authManager.registerTypes('basic', {
  auth: BasicAuth,
  title: 'Password',
});

// Использует промежуточное ПО для аутентификации
app.resourceManager.use(authManager.middleware());

Концепции

  • Тип аутентификации (AuthType): Различные методы аутентификации пользователей, например: пароль, SMS, OIDC, SAML и т.д.
  • Аутентификатор (Authenticator): Сущность метода аутентификации, которая фактически хранится в коллекции и соответствует записи конфигурации определённого типа аутентификации (AuthType). Один метод аутентификации может иметь несколько аутентификаторов, соответствующих различным конфигурациям, предоставляя разные способы аутентификации пользователей.
  • Идентификатор аутентификатора (Authenticator name): Уникальный идентификатор аутентификатора, используемый для определения метода аутентификации для текущего запроса.

Методы класса

constructor()

Конструктор, создаёт экземпляр AuthManager.

Подпись

  • constructor(options: AuthManagerOptions)

Типы

export interface JwtOptions {
  secret: string;
  expiresIn?: string;
}

export type AuthManagerOptions = {
  authKey: string;
  default?: string;
  jwt?: JwtOptions;
};

Подробности

AuthManagerOptions
СвойствоТипОписаниеПо умолчанию
authKeystringНеобязательно, ключ в заголовке запроса, содержащий идентификатор текущего аутентификатора.X-Authenticator
defaultstringНеобязательно, идентификатор аутентификатора по умолчанию.basic
jwtJwtOptionsНеобязательно, можно настроить, если используется JWT для аутентификации.-
JwtOptions
СвойствоТипОписаниеПо умолчанию
secretstringСекрет токенаX-Authenticator
expiresInstringНеобязательно, время жизни токена.7d

setStorer()

Устанавливает методы для хранения и получения данных аутентификатора.

Подпись

  • setStorer(storer: Storer)

Типы

export interface Authenticator = {
  authType: string;
  options: Record<string, any>;
  [key: string]: any;
};

export interface Storer {
  get: (name: string) => Promise<Authenticator>;
}

Подробности

Authenticator
СвойствоТипОписание
authTypestringТип аутентификации
optionsRecord<string, any>Конфигурация, связанная с аутентификатором
Storer

Storer — это интерфейс для хранения аутентификаторов, содержащий один метод.

  • get(name: string): Promise<Authenticator> — Получает аутентификатор по его идентификатору. В NocoBase фактический возвращаемый тип — AuthModel.

registerTypes()

Регистрирует тип аутентификации.

Подпись

  • registerTypes(authType: string, authConfig: AuthConfig)

Типы

export type AuthExtend<T extends Auth> = new (config: Config) => T;

type AuthConfig = {
  auth: AuthExtend<Auth>; // Класс аутентификации.
  title?: string; // Отображаемое имя типа аутентификации.
};

Подробности

СвойствоТипОписание
authAuthExtend<Auth>Реализация типа аутентификации, см. Auth
titlestringНеобязательно. Заголовок этого типа аутентификации, отображаемый во фронтенде.

listTypes()

Получает список зарегистрированных типов аутентификации.

Подпись

  • listTypes(): { name: string; title: string }[]

Подробности

СвойствоТипОписание
namestringИдентификатор типа аутентификации
titlestringЗаголовок типа аутентификации

get()

Получает аутентификатор.

Подпись

  • get(name: string, ctx: Context)

Подробности

СвойствоТипОписание
namestringИдентификатор аутентификатора
ctxContextКонтекст запроса

middleware()

Промежуточное ПО для аутентификации. Получает текущий аутентификатор и выполняет аутентификацию пользователя.