Правила подстановочных знаков Firebase Storage с пользовательскими токенами - PullRequest
0 голосов
/ 15 марта 2019

Почему-то я не могу заставить подстановочные знаки работать в пути с пользовательскими токенами.У пользователя есть пользовательские токены, назначенные как admin: true и ySWLb8NSTj9sur6n2CbS: true

service firebase.storage {
  match /b/{bucket}/o {
        match /conferences/{confId}/sponsors/{sponsId=**} {
        allow read: if request.auth.uid != null
        allow write: if request.auth.token.confId == true
    }
  }
}

Я пытаюсь написать /conferences/ySWLb8NSTj9sur6n2CbS/sponsors/whwhat.jpeg от клиента и получил отказ в доступе.

Если я сейчас перейду на нижеуказанное, то оно будет работать без проблем.

service firebase.storage {
  match /b/{bucket}/o {
        match /conferences/{confId}/sponsors/{sponsId=**} {
        allow read: if request.auth.uid != null
        allow write: if request.auth.token.admin == true
    }
  }
}

Я даже протестировал его, изменив собственный токен на ySWLb8NSTj9sur6n2CbS: "ySWLb8NSTj9sur6n2CbS", а затем безуспешно попробовав приведенное ниже, и получив доступотказано!

service firebase.storage {
  match /b/{bucket}/o {
        match /conferences/{confId}/sponsors/{sponsId=**} {
        allow read: if request.auth.uid != null
        allow write: if request.auth.token.confId == confId
    }
  }
}

У меня такое ощущение, что подстановочный знак по какой-то причине не выбран или я что-то пропускаю здесь?По документации я нашел это: https://firebase.google.com/docs/storage/security/user-security?authuser=0

1 Ответ

0 голосов
/ 18 марта 2019

Так что я понял, что наоборот это работает по какой-то странной причине.Я назначил пользователю пользовательскую заявку в виде массива.В этом массиве у вас есть confId.Поэтому я проверяю, находится ли соответствующий массив в этом массиве.

service firebase.storage {
  match /b/{bucket}/o {
        match /conferences {
        match /{confId}/sponsors/{sponsorId} {
        allow read: if confId in request.auth.token.userEvents
        allow write: if confId in request.auth.token.adminEvents
      }
    }
  }
}
...