Ця документація була автоматично перекладена штучним інтелектом.
NocoBase дозволяє розширювати типи автентифікації користувачів за потреби. Зазвичай існує два типи автентифікації користувачів: перший – це визначення особи користувача безпосередньо в застосунку NocoBase, наприклад, вхід за паролем або SMS; другий – це коли сторонні сервіси визначають особу користувача та повідомляють застосунок NocoBase про результат через зворотні виклики, наприклад, методи автентифікації OIDC, SAML тощо. Процес автентифікації для цих двох типів у NocoBase виглядає наступним чином:
api.auth.signIn(), надсилаючи запит до інтерфейсу auth:signIn, при цьому передаючи ідентифікатор поточного автентифікатора через заголовок запиту X-Authenticator на бек-енд.auth:signIn, використовуючи ідентифікатор автентифікатора із заголовка запиту, перенаправляє запит до відповідного типу автентифікації. Метод validate у зареєстрованому класі автентифікації цього типу виконує відповідну логічну обробку.auth:signIn, зберігає токен у Local Storage та завершує вхід. Цей крок автоматично обробляється всередині SDK.
auth:getAuthUrl), передаючи згідно з протоколом таку інформацію, як назва застосунку та ідентифікатор автентифікатора.auth:redirect), повертає результат автентифікації, а також інформацію, таку як назва застосунку та ідентифікатор автентифікатора.AuthManager отримує відповідний клас автентифікації та активно викликає метод auth.signIn(). Метод auth.signIn() викликає метод validate() для обробки логіки авторизації.token та ідентифікатор автентифікатора в параметрах URL, наприклад, ?authenticator=xxx&token=yyy.
Далі ми розглянемо, як зареєструвати серверні інтерфейси та клієнтські інтерфейси користувача.
Ядро NocoBase надає можливості для реєстрації та управління розширеними типами автентифікації. Обробка основної логіки для розширення плагіна входу вимагає успадкування від абстрактного класу Auth ядра та реалізації відповідних стандартних інтерфейсів.
Повну довідку API дивіться у Auth.
Ядро також реєструє базові операції з ресурсами, пов'язані з автентифікацією користувачів.
| API | Опис |
|---|---|
auth:check | Перевірити, чи користувач увійшов |
auth:signIn | Увійти |
auth:signUp | Зареєструватися |
auth:signOut | Вийти |
У більшості випадків розширений тип автентифікації користувачів також може використовувати наявну логіку авторизації JWT для генерації облікових даних для доступу користувачів до API. Клас BaseAuth у ядрі містить базову реалізацію абстрактного класу Auth; дивіться BaseAuth. Плагіни можуть безпосередньо успадковувати клас BaseAuth, щоб повторно використовувати частину логічного коду та знизити витрати на розробку.
При реалізації логіки автентифікації користувача зазвичай включається обробка даних користувача. У застосунку NocoBase відповідні колекції за замовчуванням визначені як:
| Колекція | Опис | Плагін |
|---|---|---|
users | Зберігає інформацію про користувача, таку як електронна пошта, нікнейм та пароль | Плагін користувачів (@nocobase/plugin-users) |
authenticators | Зберігає інформацію про автентифікатори (сутності типу автентифікації), що відповідає типу автентифікації та конфігурації | Плагін автентифікації користувачів (@nocobase/plugin-auth) |
usersAuthenticators | Пов'язує користувачів та автентифікатори, зберігає інформацію про користувача під відповідним автентифікатором | Плагін автентифікації користувачів (@nocobase/plugin-auth) |
Зазвичай розширені методи входу використовують колекції users та usersAuthenticators для зберігання відповідних даних користувача. Лише в особливих випадках вам потрібно буде самостійно додавати нову колекцію.
Основними полями колекції usersAuthenticators є:
| Поле | Опис |
|---|---|
uuid | Унікальний ідентифікатор користувача для цього типу автентифікації, наприклад, номер телефону або openid WeChat |
meta | Поле JSON, інша інформація, яку потрібно зберегти |
userId | ID користувача |
authenticator | Назва автентифікатора (унікальний ідентифікатор) |
Для операцій запиту та створення користувачів модель даних AuthModel автентифікаторів також інкапсулює кілька методів, які можна використовувати в класі CustomAuth через this.authenticator[ім'яМетоду]. Повну довідку API дивіться у AuthModel.
Розширений метод автентифікації потрібно зареєструвати в модулі управління автентифікацією.
Клієнтський інтерфейс користувача реєструється через інтерфейс registerType, наданий клієнтом плагіна автентифікації користувачів:

Якщо кілька автентифікаторів, що відповідають типу автентифікації, зареєстрували форми входу, вони відображатимуться у вигляді вкладок. Заголовок вкладки буде назвою автентифікатора, налаштованою в бек-енді.


Зазвичай це кнопки стороннього входу, але насправді це може бути будь-який компонент.

Якщо вам потрібно перейти зі сторінки входу на сторінку реєстрації, це потрібно обробити самостійно в компоненті входу.

Вгорі знаходиться загальна конфігурація автентифікатора, а внизу – частина форми користувацьких налаштувань, яку можна зареєструвати.
Щоб ініціювати на клієнтській стороні запити до інтерфейсів, пов'язаних з автентифікацією користувачів, можна використовувати SDK, наданий NocoBase.
Детальну довідку API дивіться у @nocobase/sdk - Auth.