پسوند Delete User Data ( delete-user-data
) به شما امکان می دهد وقتی کاربر از پروژه Firebase شما حذف می شود، داده های کاربر را حذف کنید. میتوانید این برنامه افزودنی را برای حذف دادههای کاربر از یکی یا همه موارد زیر پیکربندی کنید: Cloud Firestore، Realtime Database یا Cloud Storage. هر راهانداز برنامه افزودنی برای حذف دادهها روی UserId
کاربر کلید میخورد.
این افزونه برای احترام به حریم خصوصی کاربر و رعایت الزامات انطباق مفید است. با این حال، استفاده از این پسوند تضمینی برای انطباق با مقررات دولتی و صنعتی نیست.
پیش نیازها
برای مدیریت کاربران خود باید از Firebase Authentication استفاده کنید.
این برنامه افزودنی فقط داده ها را از Cloud Firestore ، پایگاه داده بیدرنگ و Cloud Storage حذف می کند. اگر دادههای کاربر را در جای دیگری ذخیره میکنید، هنگام حذف کاربران، باید دادههای کاربر را از آن منابع نیز حذف کنید.
افزونه را نصب کنید
برای نصب برنامه افزودنی، مراحل موجود در صفحه Install Firebase Extension را دنبال کنید. به طور خلاصه یکی از موارد زیر را انجام دهید:
کنسول Firebase: روی دکمه زیر کلیک کنید:
CLI: دستور زیر را اجرا کنید:
firebase ext:install firebase/delete-user-data --project=projectId-or-alias
در طول نصب برنامه افزودنی، از شما خواسته می شود تعدادی پارامتر پیکربندی را مشخص کنید:
مکان توابع ابری:
محل استقرار توابع ایجاد شده برای این افزونه را انتخاب کنید. شما معمولاً مکانی نزدیک به پایگاه داده خود می خواهید. برای راهنمایی در انتخاب مکان، به راهنمای انتخاب مکان مراجعه کنید.
مسیرهای Cloud Firestore:
کدام مسیرها در نمونه Cloud Firestore شما حاوی داده های کاربر هستند؟ اگر از Cloud Firestore استفاده نمی کنید، خالی بگذارید. مسیرهای کامل را که با کاما از هم جدا شده اند وارد کنید. می توانید شناسه کاربری کاربر حذف شده را با
{UID}
نشان دهید. به عنوان مثال، اگرusers
وadmins
مجموعهها را دارید و هر مجموعه دارای اسنادی با شناسه کاربری به عنوان شناسه سند است، میتوانیدusers/{UID},admins/{UID}
وارد کنید.حالت حذف Cloud Firestore:
(فقط در صورت استفاده از پارامتر
Cloud Firestore paths
قابل اجراست.) چگونه می خواهید اسناد Cloud Firestore را حذف کنید؟ برای حذف اسناد در زیر مجموعه ها، این پارامتر را رویrecursive
تنظیم کنید.نمونه پایگاه داده بیدرنگ:
از کدام نمونه پایگاه داده بیدرنگ می خواهید داده های کاربر را حذف کنید؟
مکان پایگاه داده بیدرنگ:
(فقط در صورتی قابل اجرا است که پارامتر
Realtime Database instance
را ارائه کرده باشید.) از کدام مکان پایگاه داده بیدرنگ می خواهید داده های کاربر را حذف کنید؟مسیرهای پایگاه داده بیدرنگ:
کدام مسیرها در نمونه پایگاه داده بیدرنگ شما حاوی داده های کاربر هستند؟ اگر از پایگاه داده بیدرنگ استفاده نمی کنید، خالی بگذارید. مسیرهای کامل را که با کاما از هم جدا شده اند وارد کنید. می توانید شناسه کاربری کاربر حذف شده را با
{UID}
نشان دهید. به عنوان مثال:users/{UID},admins/{UID}
.مسیرهای ذخیره سازی ابری:
در کجای Google Cloud Storage داده های کاربر را ذخیره می کنید؟ اگر از فضای ذخیرهسازی ابری استفاده نمیکنید، خالی بگذارید. مسیرهای کامل فایل ها یا دایرکتوری ها را در سطل های Storage خود وارد کنید که با کاما از هم جدا شده اند. از
{UID}
برای نشان دادن شناسه کاربری کاربر حذف شده و از{DEFAULT}
برای نشان دادن سطل ذخیره سازی پیش فرض خود استفاده کنید.در اینجا یک سری مثال آورده شده است:
- برای حذف همه فایلهای موجود در سطل پیشفرض خود با طرح نامگذاری فایل
{UID}-pic.png
،{DEFAULT}/{UID}-pic.png
وارد کنید. - همچنین برای حذف همه فایلهای موجود در سطل دیگری به نام
my-app-logs
با طرح نامگذاری فایل{UID}-logs.txt
،{DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt
را وارد کنید.{DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt
. - همچنین برای حذف دایرکتوری دارای برچسب User ID و همه فایلهای آن (مانند
media/{UID}
)،{DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt,{DEFAULT}/media/{UID}
را وارد کنید.{DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt,{DEFAULT}/media/{UID}
.
- برای حذف همه فایلهای موجود در سطل پیشفرض خود با طرح نامگذاری فایل
کشف داده ها برای حذف
چند مکانیسم وجود دارد که این برنامه افزودنی برای کشف داده های حذف استفاده می کند. این مکانیسم ها باید به صراحت برای برنامه افزودنی پیکربندی شوند تا داده ها را حذف کند. برنامه افزودنی فقط داده هایی را حذف می کند که صراحتاً بر اساس مکانیسم های ارائه شده برای حذف پیکربندی شده اند.
از تفاوت های رفتاری زیر بین هر سرویس آگاه باشید:
- Cloud Firestore: رفتار پیشفرض حذف سطحی یک سند است (مجموعههای فرعی حذف نمیشوند). برای حذف بازگشتی همه زیر مجموعه های یک سند، گزینه "Cloud Firestore delete mode" را روی "Recursive" تنظیم کنید.
- پایگاه داده بیدرنگ: تمام داده ها در گره مشخص شده حذف خواهند شد.
- ذخیره سازی: اگر مسیر دایرکتوری مشخص شده باشد، تمامی فایل ها و زیر شاخه ها حذف خواهند شد.
از طریق مسیر
هنگام پیکربندی مسیرهای Cloud Firestore، Realtime Database و Cloud Storage، می توان یک متغیر UID
در مسیرها تعریف کرد که با UID کاربر احراز هویت شده جایگزین می شود. هنگامی که یک کاربر حذف می شود، برنامه افزودنی تمام داده های کلید شده در آن UID در مسیرهای داده شده را حذف می کند، به عنوان مثال:
- مسیر(های) Cloud Firestore:
users/{UID},admins/{UID}
- مسیر(های) پایگاه داده بیدرنگ:
likes/{UID}
- مسیر(های) فضای ذخیره سازی ابری:
{DEFAULT}/uploads/{UID},{DEFAULT}/avatars/{UID}.jpeg
کشف خودکار (Cloud Firestore)
برای فعال کردن افزونه برای کشف خودکار اسناد Firestore برای حذف، پارامتر پیکربندی "Enable auto discovery" را روی "بله" تنظیم کنید.
کشف خودکار با پیمایش خودکار پایگاه داده برای یافتن مجموعهها و اسنادی که باید طبق پیکربندی شما حذف شوند، کار میکند. برنامه افزودنی آن مجموعه ها و اسناد را با روش شناسی زیر شناسایی می کند:
- ابتدا، پسوند تمام مجموعه های ریشه را در پایگاه داده پیدا می کند. اگر شناسه مجموعه با UID کاربر مطابقت داشته باشد، کل مجموعه حذف می شود (بسته به پیکربندی برنامه های افزودنی برای "حالت حذف Cloud Firestore"، حذف بازگشتی یا کم عمق است.
- ثانیاً، اگر شناسه مجموعه مطابقت نداشته باشد، برنامه افزودنی تلاش میکند سندی را شناسایی و حذف کند اگر شناسه سند آن با UID کاربر مطابقت داشته باشد.
- در نهایت برای هر سند: الف. اگر عمق جستجوی فعلی (به زیر مراجعه کنید) کمتر یا برابر با عمق جستجوی پیکربندی شده باشد، این فرآیند برای همه زیر مجموعههای سند جاری تکرار میشود. ب اگر فیلدهای جستجو پیکربندی شده باشند، برنامه افزودنی بررسی خواهد کرد که آیا فیلدهای ارائه شده با UID کاربر مطابقت دارند یا خیر. اگر مطابقت پیدا شود، سند حذف خواهد شد.
عمق جستجو
برنامه افزودنی یک مقدار عمق جستجوی قابل تنظیم را ارائه می دهد (پیش فرض 3). پیمایش تنها در صورتی اجرا میشود که عمق جستجوی فعلی کمتر یا برابر با عمق جستجوی پیکربندیشده باشد. به عنوان مثال، عمق جستجوی فعلی بر اساس عمق مجموعه فعلی یا مجموعه اصلی اسناد است
/users = 1
/users/<document-id> = 1
/users/<document-id>/comments = 2
/users/<document-id>/comments/<document-id> = 2
این برنامه افزودنی به طور خودکار UID های ذخیره شده در آرایه ها یا نقشه ها را حذف نمی کند و داده های کلید شده توسط شناسه کاربری ذخیره شده در زیر مجموعه های عمیق تو در تو را از عمق مشخص شده در بالا جستجو نمی کند.