После того, как я ударил головой о стену, что, казалось бы, было простой проблемой, я подумал, что лучше попросить о помощи.Безопасность - модели Async - Firebase
Я создаю приложение EmberFire, которое позволяет пользователям аутентифицироваться с помощью простого входа. После аутентификации пользователь может хранить определенные элементы для последующего поиска.
У меня есть модели определяется как так:
USER:
export default DS.Model.extend({
firstName: DS.attr('string'),
lastName: DS.attr('string'),
dateOfBirth: DS.attr('date'),
registeredAt: DS.attr('date'),
compentencies: DS.hasMany('competency', { async: true })
});
КОМПЕТЕНЦИЙ:
export default DS.Model.extend({
title: DS.attr('string'),
endDate: DS.attr('date'),
user: DS.belongsTo('user', { async: true })
});
Они хранятся в firebase дб в denormalised ибо, как я хотел бы, чтобы они быть.
Возникает проблема с поиском сохраненных данных. Я не уверен, как я должен блокировать компетенции до конкретного пользователя?
Способ каскада правил в FireBase Я не уверен, возможно ли это в этой форме, но мне кажется, что мне не нужно сохранять каждую компетенцию во встроенной форме под каждым пользовательским узлом.
Я знаю, что могу просто разрешить доступ для чтения ко всем моделям «Компетентность» с помощью this.store.find («компетенция»), а затем отфильтровать их на клиенте, но это не соответствует безопасности, которую я ожидал бы.
Любая помощь будет большой благодарностью.
Райан
1) Ваш бэкэнд может передавать компетенции как идентификаторы '{user: {компетенции: [1,2]}}' 2) Ваш бэкэнд знает, что запрашивает пользователь, не так ли? Вы можете ответить на 'this.store.find ('competency')' с компетенциями только зарегистрированного пользователя. Это простой, безопасный и правильный путь. –
Спасибо за ваш ответ, однако я не понимаю, как область действия «this.store.find» («компетенция»). Я думал, что сделает запрос/полномочия на сервере, что в Firebase может вернуть все компетенции или нет? – RLW
Мой бэкэнд знает, какой пользователь запрашивает информацию. Тем не менее, рассмотрение вопроса - это еще один вопрос. – RLW