Firebase를 사용하여 추측하기 어려운 공개적으로 읽을 수있는 데이터를 만들고 싶습니다. 따라서 "element [element ID = X]"에 저장된 데이터에 대한 액세스 권한을 부여하려면 액세스 권한을 부여하기 위해 만들어진 보안 토큰과 함께 "X"를 보내는 대신 "X"로 보내고 싶습니다. 요소에. Firebase의 push()
과 childByAutoID
은 자연스럽게 적합합니다. 나는 모든 개별 요소에 공개 읽기 권한을 부여 할 수 있지만 공개 목록을 거부 할 수 있습니다. 내 코드는 매끄럽게 토큰 및 난수 생성이 없습니다. 자동 생성 된 ID는 고유해야하기 때문에 추측하기 어려워 야합니다.Firebase의 push()/childByAutoID를 사용하여 생성 된 이름의 고유성 보장은 무엇입니까?
Firebase.js에서 볼 때 자동 생성 된 ID의 처음 8 자는 현재 시간 소인을 기반으로하며 다음 12 자는 Math.random()
을 사용하여 임의로 생성됩니다. 나는 iOS 프레임 워크가 똑같은 일을한다고 가정하고, 비록 코드를 볼 수는 없지만 라이브러리는 SecRandomCopyBytes
과 arc4random
에 링크되어있다.
필자의 의도로 보아도 충분하지만,이 동작에 의존 할 수 있는지 여부는 Firebase의 지침을 본 사람이 있습니까? 나는이 이름들이 상대적으로 강한 임의의 문자열이라고 가정하는 코드를 작성하는 것을 싫어하고 새로운 버전의 Firebase로 업그레이드 할 때 위 가정을 위반하게됩니다.
어디에서나 push() ID의 스펙이 쓰여 있습니까? 몇 가지를 살펴보면 길이는 항상 20 자이고 "-"로 시작하고 나머지 19 자는 [A-Z] [a-z] [0-9] 및 "-"일 수 있습니다. 다른 건 없니? – neverfox
대단한 질문입니다. 나는 그 대답을 알고 싶다. 예 : 항상 대시 접두어를 사용할 수 있습니까? – chris
유효한 Firebase 키가 아닌 푸시 ID 형식과 푸시()에 대한 후속 호출이 시간별로 ID를 정렬한다는 사실에 대한 보장은 없습니다. 이상적으로 앱은 푸시 ID가 사용 된 경로를 이미 알고있을 것이므로 푸시 ID를 동일한 경로에서 맞춤 키 이름과 함께 사용하는 것은 좋지 않습니다. – Anant