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"
}
}
}
}
사용자의 인증 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] 삭제
몇 마디 만하겠습니다