RLS Examples
תבניות מעשיות של Row-Level Security לסוגי אפליקציות נפוצים. חשוב: Base44 RLS תומך ב:- אופרטורים לוגיים:
$or,$and,$norלשילוב תנאים - אופרטורי שדה (עבור שדות
data.*):$in,$nin,$ne,$all - user_condition: Equality בלבד (ללא אופרטורים)
תוכן
- Simple Patterns (JSON Schema)
- Using Operators
- Field-Level Security Examples
- Complex Patterns (Dashboard UI or Backend)
- Best Practices
Simple Patterns (JSON Schema)
תבניות אלה עובדות עם פורמט RLS של סכמת JSON.Todo App - גישה לבעלים בלבד
משתמשים רואים ומנהלים רק את המשימות שלהם.טופס צור קשר - יצירה ציבורית, קריאה למנהלים בלבד
כל אחד יכול להגיש, רק מנהלים יכולים לצפות בהגשות.פרופיל משתמש - ניהול עצמי
משתמשים יכולים לגשת רק לפרופיל שלהם.נתוני מחלקה - גישת מחלקה זהה
משתמשים יכולים לראות רק רשומות מהמחלקה שלהם.Subscription - מנוהל על ידי מנהל, קריא למשתמש דרך שדה email
נתונים פרטיים - לבעלים בלבד
קריאה ציבורית, כתיבה מאומתת
כל אחד יכול לקרוא, רק משתמשים מחוברים יכולים ליצור/לערוך את הרשומות שלהם.שימוש באופרטורים
אופרטורים לוגיים
שלב מספר תנאים באמצעות$or, $and, או $nor:
גישת Owner OR Admin:
אופרטורי שדה לשדות data.*
השתמש ב-$in, $nin, $ne, $all להשוואת שדות נתוני entity:
גישה מבוססת תגים ($in):
שילוב אופרטורים לוגיים ואופרטורי שדה
דוגמאות Field-Level Security
שלוט בגישה לשדות ספציפיים בתוך entity.שדה משכורת רגיש
שדות פנימיים למנהלים בלבד
Complex Patterns (Dashboard UI or Backend)
תבניות מסוימות עדיין עשויות לדרוש את ממשק המשתמש של Dashboard או פונקציות backend.יחסים דו-כיווניים (למשל, חברויות, התאמות)
דרישה: כל אחד מהצדדים ביחסים צריך גישה. כעת אפשרי עם $or:- עיצוב entity מחדש: אחסן שתי רשומות ליחסים (אחת לכל צד)
- פונקציית backend: שאילתה עם לוגיקה מותאמת
לוגיקה עסקית מורכבת
דרישה: גישה תלויה במספר שדות entity עם תנאים מורכבים. מגבלת JSON Schema: בעוד שאופרטורים עוזרים, לוגיקה עסקית מורכבת מאוד עדיין עשויה להיות קשה להביע. אפשרויות פתרון:- פונקציית backend: ישם לוגיקת גישה מותאמת
- שילוב כללים פשוטים יותר: פרק כללים מורכבים לכללים פשוטים יותר ברמת entity וברמת שדה
שיטות עבודה מומלצות
אסטרטגיית אבטחה
השתמש בשילוב של RLS ברמת entity ואבטחה ברמת שדה:| סוג נתונים | גישה | דוגמה |
|---|---|---|
| ניתן לעריכה על ידי משתמש | Entity RLS: לבעלים בלבד | UserProfile עם בדיקת created_by |
| שדות רגישים | Field-level RLS | שדה Salary עם בדיקת תפקיד HR |
| גישה למספר תפקידים | $or עם user_condition | גישת Admin OR Manager |
| גישה מותנית | אופרטורי שדה | $in, $ne על שדות data |
| תוכן ציבורי | Entity RLS: read: true | PublicPost |
| תוכן פרטי | Entity RLS: לבעלים בלבד | PrivateNote |
מתי להשתמש בכל גישה
| דרישה | גישה |
|---|---|
| תנאי יחיד (owner, admin, department) | JSON Schema RLS |
| מספר תנאי OR/AND | JSON Schema RLS עם $or/$and |
בדיקות ערך שדה עם $in/$ne/וכו’ | JSON Schema RLS לשדות data.* |
| בקרת גישה ברמת שדה | JSON Schema FLS (rls ברמת שדה) |
אופרטורי השוואה מורכבים ($gt, $lt) | פונקציות backend |
| לוגיקה עסקית מורכבת מאוד | פונקציות backend |
תבניות תפקידים נפוצות
| תפקיד | גישה טיפוסית |
|---|---|
admin | גישה מלאה לכל הרשומות |
moderator | גישת read/update, delete מוגבל |
manager | גישה מוגבלת למחלקה |
user | רק הרשומות שלו |
סיכום אופרטורים נתמכים
| אופרטור | נתמך | הערות |
|---|---|---|
$or | כן | שלב מספר תנאים |
$and | כן | כל התנאים חייבים להתאים |
$nor | כן | אף אחד מהתנאים לא מתאים |
$in | כן | לשדות data.* בלבד |
$nin | כן | לשדות data.* בלבד |
$ne | כן | לשדות data.* בלבד |
$all | כן | לשדות data.* בלבד |
$gt, $lt, $gte, $lte | לא | השתמש בפונקציות backend |
$regex | לא | השתמש בפונקציות backend |
סיכום מגבלות
| לא נתמך | חלופה |
|---|---|
אופרטורים על user_condition | השתמש ב-equality בלבד לבדיקות משתמש |
אופרטורי השוואה ($gt, $lt) | פונקציות backend |
התאמת regex ($regex) | פונקציות backend |
| יחסים בין entities | פונקציות backend |
דף זה תורגם באמצעות בינה מלאכותית. למידע המדויק והעדכני ביותר, עיין בגרסה האנגלית.

