Tiện ích Xoá dữ liệu người dùng (delete-user-data) cho phép bạn xoá dữ liệu của người dùng khi người dùng đó bị xoá khỏi dự án Firebase. Bạn có thể định cấu hình tiện ích này để xoá dữ liệu người dùng khỏi bất kỳ hoặc tất cả các nguồn sau: Cloud Firestore, Cơ sở dữ liệu theo thời gian thực hoặc Cloud Storage. Mỗi trình kích hoạt của tiện ích để xoá dữ liệu đều được khoá bằng UserId của người dùng.
Tiện ích này hữu ích trong việc tôn trọng quyền riêng tư của người dùng và đáp ứng các yêu cầu tuân thủ. Tuy nhiên, việc sử dụng tiện ích này không đảm bảo tuân thủ các quy định của chính phủ và ngành.
Điều kiện tiên quyết
Bạn phải sử dụng Xác thực Firebase để quản lý người dùng.
Tiện ích này chỉ xoá dữ liệu khỏi Cloud Firestore, Cơ sở dữ liệu theo thời gian thực và Cloud Storage. Nếu lưu trữ dữ liệu người dùng ở nơi khác, bạn cũng nên xoá dữ liệu người dùng khỏi các nguồn đó khi xoá người dùng.
Cài đặt tiện ích
Để cài đặt tiện ích, hãy làm theo các bước trên trang Cài đặt tiện ích Firebase. Tóm lại, hãy thực hiện một trong những thao tác sau:
Bảng điều khiển của Firebase: Nhấp vào nút sau:
CLI: Chạy lệnh sau:
firebase ext:install firebase/delete-user-data --project=projectId-or-alias
Trong quá trình cài đặt tiện ích, bạn sẽ được nhắc chỉ định một số tham số cấu hình:
Vị trí Cloud Functions:
Chọn vị trí mà bạn muốn triển khai các hàm được tạo cho tiện ích này. Thông thường, bạn muốn chọn một vị trí gần cơ sở dữ liệu của mình. Để được trợ giúp chọn vị trí, hãy tham khảo hướng dẫn chọn vị trí.
Đường dẫn Cloud Firestore:
Những đường dẫn nào trong thực thể Cloud Firestore chứa dữ liệu người dùng? Để trống nếu bạn không sử dụng Cloud Firestore. Nhập đường dẫn đầy đủ, phân tách bằng dấu phẩy. Bạn có thể biểu thị Mã nhận dạng người dùng của người dùng đã xoá bằng
{UID}. Ví dụ: nếu bạn có các bộ sưu tậpusersvàadmins, và mỗi bộ sưu tập có các tài liệu có Mã nhận dạng người dùng làm mã nhận dạng tài liệu, thì bạn có thể nhậpusers/{UID},admins/{UID}.Chế độ xoá Cloud Firestore:
(Chỉ áp dụng nếu bạn sử dụng tham số
Cloud Firestore paths.) Bạn muốn xoá tài liệu Cloud Firestore như thế nào? Để xoá cả tài liệu trong bộ sưu tập con, hãy đặt tham số này thànhrecursive.Thực thể Cơ sở dữ liệu theo thời gian thực:
Bạn muốn xoá dữ liệu người dùng khỏi thực thể Cơ sở dữ liệu theo thời gian thực nào?
Vị trí Cơ sở dữ liệu theo thời gian thực:
(Chỉ áp dụng nếu bạn cung cấp tham số
Realtime Database instance.) Bạn muốn xoá dữ liệu người dùng khỏi vị trí Cơ sở dữ liệu theo thời gian thực nào?Đường dẫn Cơ sở dữ liệu theo thời gian thực:
Những đường dẫn nào trong thực thể Cơ sở dữ liệu theo thời gian thực chứa dữ liệu người dùng? Để trống nếu bạn không sử dụng Realtime Database. Nhập đường dẫn đầy đủ, phân tách bằng dấu phẩy. Bạn có thể biểu thị Mã nhận dạng người dùng của người dùng đã xoá bằng
{UID}. Ví dụ:users/{UID},admins/{UID}.Đường dẫn Cloud Storage:
Bạn lưu trữ dữ liệu người dùng ở đâu trong Google Cloud Storage? Để trống nếu bạn không sử dụng Cloud Storage. Nhập đường dẫn đầy đủ đến các tệp hoặc thư mục trong bộ chứa Storage, phân tách bằng dấu phẩy. Sử dụng
{UID}để biểu thị Mã nhận dạng người dùng của người dùng đã xoá và sử dụng{DEFAULT}để biểu thị bộ chứa Storage mặc định.Dưới đây là một loạt ví dụ:
- Để xoá tất cả các tệp trong bộ chứa mặc định có quy tắc đặt tên tệp
{UID}-pic.png, hãy nhập{DEFAULT}/{UID}-pic.png. - Để xoá tất cả các tệp trong một bộ chứa khác có tên là
my-app-logsvới quy tắc đặt tên tệp{UID}-logs.txt, hãy nhập{DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt. - Để cũng xoá một thư mục được gắn nhãn Mã nhận dạng người dùng và tất cả các tệp trong thư mục đó (như
media/{UID}), hãy nhập{DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt,{DEFAULT}/media/{UID}.
- Để xoá tất cả các tệp trong bộ chứa mặc định có quy tắc đặt tên tệp
Khám phá dữ liệu để xoá
Có một vài cơ chế mà tiện ích này sử dụng để khám phá dữ liệu cần xoá. Bạn phải định cấu hình rõ ràng các cơ chế này để tiện ích xoá dữ liệu. Tiện ích này sẽ chỉ xoá dữ liệu được định cấu hình rõ ràng để xoá dựa trên các cơ chế được cung cấp.
Hãy lưu ý đến những điểm khác biệt về hành vi sau đây giữa mỗi dịch vụ:
- Cloud Firestore: hành vi mặc định là xoá nông một tài liệu (các bộ sưu tập con sẽ không bị xoá). Để xoá đệ quy tất cả các bộ sưu tập con của một tài liệu, hãy đặt tuỳ chọn "Chế độ xoá Cloud Firestore" thành "Đệ quy".
- Cơ sở dữ liệu theo thời gian thực: tất cả dữ liệu tại nút được chỉ định sẽ bị xoá.
- Storage: nếu bạn chỉ định đường dẫn thư mục, thì tất cả các tệp và thư mục con sẽ bị xoá.
Theo đường dẫn
Khi định cấu hình đường dẫn Cloud Firestore, Cơ sở dữ liệu theo thời gian thực và Cloud Storage, bạn có thể xác định biến UID trong các đường dẫn sẽ được thay thế bằng UID của người dùng đã xác thực. Khi một người dùng bị xoá, tiện ích sẽ xoá tất cả dữ liệu được khoá trên UID đó tại các đường dẫn đã cho, ví dụ:
- Đường dẫn Cloud Firestore:
users/{UID},admins/{UID} - Đường dẫn Cơ sở dữ liệu theo thời gian thực:
likes/{UID} - Đường dẫn Cloud Storage:
{DEFAULT}/uploads/{UID},{DEFAULT}/avatars/{UID}.jpeg
Tự động khám phá (Cloud Firestore)
Để cho phép tiện ích tự động khám phá các tài liệu Firestore cần xoá, hãy đặt tham số cấu hình "Bật tính năng tự động khám phá" thành "Có".
Tính năng tự động khám phá hoạt động bằng cách tự động duyệt qua cơ sở dữ liệu để tìm các bộ sưu tập và tài liệu cần xoá theo cấu hình của bạn. Tiện ích xác định các bộ sưu tập và tài liệu đó bằng phương pháp sau:
- Trước tiên, tiện ích sẽ tìm tất cả các bộ sưu tập gốc trong cơ sở dữ liệu. Nếu mã nhận dạng của một bộ sưu tập khớp với UID của người dùng, thì toàn bộ bộ sưu tập sẽ bị xoá (việc xoá là đệ quy hoặc nông, tuỳ thuộc vào cấu hình của tiện ích cho "Chế độ xoá Cloud Firestore").
- Thứ hai, nếu mã nhận dạng bộ sưu tập không khớp, tiện ích sẽ cố gắng xác định và xoá một tài liệu nếu mã nhận dạng tài liệu của tài liệu đó khớp với UID của người dùng.
- Cuối cùng, đối với mỗi tài liệu: a. Nếu độ sâu tìm kiếm hiện tại (xem bên dưới) nhỏ hơn hoặc bằng độ sâu tìm kiếm đã định cấu hình, thì quá trình này sẽ được lặp lại cho tất cả các bộ sưu tập con của tài liệu hiện tại. b. Nếu bạn đã định cấu hình các trường tìm kiếm, tiện ích sẽ kiểm tra xem các trường được cung cấp có khớp với UID của người dùng hay không. Nếu tìm thấy kết quả khớp, tài liệu sẽ bị xoá.
Số trang trung bình được xem sau mỗi tìm kiếm
Tiện ích này cung cấp giá trị độ sâu tìm kiếm có thể định cấu hình (mặc định là 3). Quá trình duyệt sẽ chỉ được thực thi nếu độ sâu tìm kiếm hiện tại nhỏ hơn hoặc bằng độ sâu tìm kiếm đã định cấu hình. Độ sâu tìm kiếm hiện tại dựa trên độ sâu của bộ sưu tập hiện tại hoặc bộ sưu tập mẹ của tài liệu, ví dụ:
/users = 1
/users/<document-id> = 1
/users/<document-id>/comments = 2
/users/<document-id>/comments/<document-id> = 2
Tiện ích này sẽ KHÔNG tự động xoá UID được lưu trữ trong mảng hoặc bản đồ và sẽ không tìm kiếm dữ liệu được khoá bằng mã nhận dạng người dùng được lưu trữ trong các bộ sưu tập con lồng nhau sâu quá độ sâu được chỉ định ở trên.