מסמך זה תורגם על ידי בינה מלאכותית. לכל אי דיוק, אנא עיין בגרסה האנגלית
NocoBase תומכת בהרחבת סוגי אימות משתמשים לפי הצורך. אימות משתמשים מתחלק בדרך כלל לשני סוגים: האחד הוא קביעת זהות המשתמש בתוך יישום NocoBase עצמו, כמו התחברות באמצעות סיסמה, התחברות באמצעות SMS וכדומה; והשני הוא שירותי צד שלישי הקובעים את זהות המשתמש ומודיעים ליישום NocoBase על התוצאה באמצעות קריאות חוזרות (callbacks), כמו שיטות אימות OIDC, SAML וכדומה. תהליך האימות עבור שני סוגי האימות השונים ב-NocoBase הוא כדלקמן:
api.auth.signIn(), מבקש את ממשק ההתחברות auth:signIn, ובמקביל מעביר את מזהה המאמת הנוכחי דרך כותרת הבקשה X-Authenticator ל-backend.auth:signIn, בהתבסס על מזהה המאמת בכותרת הבקשה, מעביר את הבקשה לסוג האימות המתאים למאמת, ושיטת validate במחלקת האימות הרשומה של סוג אימות זה מבצעת את הטיפול הלוגי המתאים.auth:signIn, שומר את ה-token ב-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 | מזהה ייחודי למשתמש עבור סוג אימות זה, כגון מספר טלפון או מזהה משתמש של שירות צד שלישי |
meta | שדה JSON, מידע נוסף שיש לשמור |
userId | מזהה משתמש |
authenticator | שם המאמת (מזהה ייחודי) |
עבור פעולות שאילתה ויצירת משתמשים, מודל הנתונים AuthModel של authenticators עוטף גם כמה שיטות, שניתן להשתמש בהן במחלקת CustomAuth באמצעות this.authenticator[methodName]. לתיעוד ה-API המלא, עיינו ב-AuthModel.
שיטת האימות המורחבת צריכה להירשם במודול ניהול האימות.
ממשק המשתמש בצד הלקוח נרשם באמצעות הממשק registerType המסופק על ידי לקוח תוסף אימות המשתמשים:

אם מספר מאמתים המתאימים לסוג האימות רשמו טופסי התחברות, הם יוצגו בצורת לשוניות (Tabs). כותרת הלשונית תהיה כותרת המאמת שהוגדרה ב-backend.


בדרך כלל מדובר בכפתורי התחברות של צד שלישי, אך למעשה יכול להיות כל רכיב.

אם אתם צריכים לקפוץ מדף ההתחברות לדף ההרשמה, עליכם לטפל בכך בעצמכם ברכיב ההתחברות.

החלק העליון הוא תצורת המאמת הגנרית, והחלק התחתון הוא החלק של טופס התצורה המותאמת אישית שניתן לרשום.
כדי ליזום בקשות לממשקים הקשורים לאימות משתמשים בצד הלקוח, אתם יכולים להשתמש ב-SDK המסופק על ידי NocoBase.
לתיעוד API מפורט, עיינו ב-@nocobase/sdk - Auth.