사용자 이메일을 고유 ID로 사용할 때 Firebase 규칙을 설정하는 방법은 무엇입니까?

dsunku

Ionic Framework와 Firebase를 사용하는 앱을 개발 중입니다. Firebase에 다음 데이터 구조가 있습니다.

Users {
  mary@fb,com: {
    Group: {
      group123: {
        Contacts: {[email protected], [email protected], etc. }
      }
      group456: {
        Contacts: {[email protected], [email protected], etc. }
      }
    }
  }
  [email protected]: {}
  [email protected]: {}
  etc.
}

앱의 사용자는 그룹을 만들고 친구를 그룹에 초대 할 수 있습니다.

Firebase 규칙을 사용하여 Users / mary @ fb, com / Group / group123 경로에 "[email protected]", "[email protected]"등의 액세스 권한을 부여하는 방법을 알아 내려고합니다. 또한 mary @ fb, com에 읽기 및 쓰기 권한을 부여하는 데 문제가 있습니다. 사용자 이메일과 같은 사용자 정의 고유 ID를 사용하기 위해 아래와 같은 규칙을 어떻게 사용합니까?

{
  "rules": {
    "Users": {
      "$user_id": {
        ".read": "$user_id === auth.uid",
        ".write": "$user_id === auth.uid"
      }
    }
  }
}
Kato

사용자의 인증 uid을 고유 식별자로 사용하는 것을 피하는 것은 권장되지 않으며 아마도 당신을 슬프게 할 것입니다. 나는이 접근 방식을 재고하고 다른 사람들이이를 따르지 않도록 권장합니다.

이것을 피할 수 없다고 가정하면 다음이 필요합니다.

  • 자신의 인증 스키마 구현
  • 자신의 토큰에 서명
  • email토큰 데이터의 일부로 포함 하거나 사용 사례에 따라 (질문에서이를 공유하는 데 큰 도움이됩니다. XY 문제 참조 ) 이스케이프 된 이메일을uid
  • 보안 규칙 auth.email대신 참조auth.uid

따라서 서버 / 노드 / etc 스크립트에서 :

// after some auth process to verify 
// the user and obtain the email
var FirebaseTokenGenerator = require("firebase-token-generator");
var tokenGenerator = new FirebaseTokenGenerator("<YOUR_FIREBASE_SECRET>");
var token = tokenGenerator.createToken({uid: uniqueIdOrMaybeEscapedEmail, email: escapedEmailAddress});

그리고 당신의 규칙에서 :

".read": "$user_id === auth.email",

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

소셜 인증을 사용할 때 새로 등록 된 사용자와 Firebase에 등록 된 사용자를 구별하는 방법은 무엇입니까?

분류에서Dev

관련 메서드를 사용할 때 고유 속성을 재정의하는 방법은 무엇입니까?

분류에서Dev

ForEach 메서드를 사용할 때 기본값을 Range <Int>로 설정하는 방법은 무엇입니까?

분류에서Dev

Firebase를 사용할 때 비즈니스 로직 노출을 방지하는 방법은 무엇입니까?

분류에서Dev

add-user-keycloak.sh로 새 사용자를 추가 할 때 사용자의 이메일을 확인하는 방법은 무엇입니까?

분류에서Dev

내 사용자가 로그인 할 때 공급자 알림을 사용하는 방법은 무엇입니까?

분류에서Dev

std :: cin을 사용할 때 재설정하는 방법은 무엇입니까?

분류에서Dev

사용자가 기존 방식으로 계정을 만드는 데 이미 사용 된 것과 동일한 Gmail을 사용하여 Google OAuth로 로그인 할 때의 규칙은 무엇입니까?

분류에서Dev

Auth0 : 규칙에서 사용자 프로필을 사용하는 방법은 무엇입니까?

분류에서Dev

정렬을 사용할 때 특정 파일을 고정하는 방법은 무엇입니까?

분류에서Dev

"원시 유형"을 정적 필드 / 반환 유형으로 사용할 때 제네릭 경고를 피하는 방법은 무엇입니까?

분류에서Dev

사용자 지정 GridViewItem 템플릿을 사용할 때 ItemContainerTransitions를 사용하는 방법은 무엇입니까?

분류에서Dev

파일 관리자에서`Extract here` 메뉴 명령을 실행할 때 사용할 아카이버를 설정하는 방법은 무엇입니까?

분류에서Dev

입력을 \ n으로 분할하려고 할 때 사용자 입력을 \ n 텍스트 영역에 삽입하는 방법은 무엇입니까?

분류에서Dev

사용자가 자신의 프로필 데이터를 읽을 때 읽기 작업에 대한 Firebase 보안 규칙을 설정하는 방법

분류에서Dev

Flutter / Firebase를 사용하여 업로드를 누를 때마다 고유 한 이미지 ID를 만드는 방법은 무엇입니까?

분류에서Dev

사용자가 ShareActionProvider로 메뉴 항목을 선택할 때 감지하는 방법은 무엇입니까?

분류에서Dev

Asp.net ID-로그인 한 사용자 역할을 유지하는 방법은 무엇입니까?

분류에서Dev

B2C 사용자 지정 정책을 사용하여 Azure 함수를 호출 할 때 이메일을 보내는 방법은 무엇입니까?

분류에서Dev

새 사용자를 추가 할 때 기본 설정을 변경하는 방법은 무엇입니까?

분류에서Dev

이메일 채널을 사용할 때 알리미를 사용하여 HTML로 알림을 콘텐츠로 보내는 방법은 무엇입니까?

분류에서Dev

Join을 사용할 때 고유 한 레코드를 선택하는 방법은 무엇입니까?

분류에서Dev

게시 방법이 이메일을 전달할 때 테이블에서 사용자 이름을 선택하고 해당 사용자 이름을 다른 테이블에 삽입하는 방법은 무엇입니까?

분류에서Dev

사용자가 다음 요소로 이동할 때 양식의 유효성을 검사하는 방법은 무엇입니까?

분류에서Dev

multer를 사용하여 파일을 업로드하려고 할 때 req.file이 "정의되지 않은"이유는 무엇입니까?

분류에서Dev

react + webpack을 사용할 때 절대 경로를 사용하여 사용자 지정 scss를 가져 오는 방법은 무엇입니까?

분류에서Dev

'ID 별'규칙을 사용하는 것 이외의 버튼 값을 얻는 방법은 무엇입니까?

분류에서Dev

IIS HTTP PlatformHandler를 사용하고 Windows 인증을 사용할 때 Python에서 인증 된 사용자 이름을 얻는 방법은 무엇입니까?

분류에서Dev

주석을 사용하는 대신 SonarQube 규칙 설명을 markdown / html 리소스 파일로 지정하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    소셜 인증을 사용할 때 새로 등록 된 사용자와 Firebase에 등록 된 사용자를 구별하는 방법은 무엇입니까?

  2. 2

    관련 메서드를 사용할 때 고유 속성을 재정의하는 방법은 무엇입니까?

  3. 3

    ForEach 메서드를 사용할 때 기본값을 Range <Int>로 설정하는 방법은 무엇입니까?

  4. 4

    Firebase를 사용할 때 비즈니스 로직 노출을 방지하는 방법은 무엇입니까?

  5. 5

    add-user-keycloak.sh로 새 사용자를 추가 할 때 사용자의 이메일을 확인하는 방법은 무엇입니까?

  6. 6

    내 사용자가 로그인 할 때 공급자 알림을 사용하는 방법은 무엇입니까?

  7. 7

    std :: cin을 사용할 때 재설정하는 방법은 무엇입니까?

  8. 8

    사용자가 기존 방식으로 계정을 만드는 데 이미 사용 된 것과 동일한 Gmail을 사용하여 Google OAuth로 로그인 할 때의 규칙은 무엇입니까?

  9. 9

    Auth0 : 규칙에서 사용자 프로필을 사용하는 방법은 무엇입니까?

  10. 10

    정렬을 사용할 때 특정 파일을 고정하는 방법은 무엇입니까?

  11. 11

    "원시 유형"을 정적 필드 / 반환 유형으로 사용할 때 제네릭 경고를 피하는 방법은 무엇입니까?

  12. 12

    사용자 지정 GridViewItem 템플릿을 사용할 때 ItemContainerTransitions를 사용하는 방법은 무엇입니까?

  13. 13

    파일 관리자에서`Extract here` 메뉴 명령을 실행할 때 사용할 아카이버를 설정하는 방법은 무엇입니까?

  14. 14

    입력을 \ n으로 분할하려고 할 때 사용자 입력을 \ n 텍스트 영역에 삽입하는 방법은 무엇입니까?

  15. 15

    사용자가 자신의 프로필 데이터를 읽을 때 읽기 작업에 대한 Firebase 보안 규칙을 설정하는 방법

  16. 16

    Flutter / Firebase를 사용하여 업로드를 누를 때마다 고유 한 이미지 ID를 만드는 방법은 무엇입니까?

  17. 17

    사용자가 ShareActionProvider로 메뉴 항목을 선택할 때 감지하는 방법은 무엇입니까?

  18. 18

    Asp.net ID-로그인 한 사용자 역할을 유지하는 방법은 무엇입니까?

  19. 19

    B2C 사용자 지정 정책을 사용하여 Azure 함수를 호출 할 때 이메일을 보내는 방법은 무엇입니까?

  20. 20

    새 사용자를 추가 할 때 기본 설정을 변경하는 방법은 무엇입니까?

  21. 21

    이메일 채널을 사용할 때 알리미를 사용하여 HTML로 알림을 콘텐츠로 보내는 방법은 무엇입니까?

  22. 22

    Join을 사용할 때 고유 한 레코드를 선택하는 방법은 무엇입니까?

  23. 23

    게시 방법이 이메일을 전달할 때 테이블에서 사용자 이름을 선택하고 해당 사용자 이름을 다른 테이블에 삽입하는 방법은 무엇입니까?

  24. 24

    사용자가 다음 요소로 이동할 때 양식의 유효성을 검사하는 방법은 무엇입니까?

  25. 25

    multer를 사용하여 파일을 업로드하려고 할 때 req.file이 "정의되지 않은"이유는 무엇입니까?

  26. 26

    react + webpack을 사용할 때 절대 경로를 사용하여 사용자 지정 scss를 가져 오는 방법은 무엇입니까?

  27. 27

    'ID 별'규칙을 사용하는 것 이외의 버튼 값을 얻는 방법은 무엇입니까?

  28. 28

    IIS HTTP PlatformHandler를 사용하고 Windows 인증을 사용할 때 Python에서 인증 된 사용자 이름을 얻는 방법은 무엇입니까?

  29. 29

    주석을 사용하는 대신 SonarQube 규칙 설명을 markdown / html 리소스 파일로 지정하는 방법은 무엇입니까?

뜨겁다태그

보관