Является ли использование родительского атрибута Google Appengine для применения разрешений по умолчанию к объекту хорошей идеей? - PullRequest
1 голос
/ 16 мая 2011

Во время взлома структуры авторизации для моего веб-приложения я думал, что большая часть моей работы будет отключена, если по умолчанию я применю следующую логику. Все объекты, созданные пользователем, имеют родителя, являющегося пользователем. Когда выполняется запрос для извлечения объектов для представления, ограничьте возвращаемые объекты, применив свойство ancestor () к запросу. Мне кажется, это просто и разумно сработало бы во всех случаях, о которых я могу подумать. Никто, похоже, не сделал этого, я что-то упустил?

Ответы [ 2 ]

4 голосов
/ 16 мая 2011

Если вы стремитесь отключить все объекты, связанные с одной учетной записью, то вам может потребоваться использовать функции multi-tenancy , предназначенные именно для этого.

Если ваша цель - получить удобный способ получить все, что создано одним пользователем, нам нужно больше узнать о том, что делает ваше приложение.

Установив пользователя в качестве родителядля всего, созданного этим пользователем, вы помещаете все, что связано с этим пользователем, в одну Entity Group , что означает, что если пользователям в вашем приложении часто нужно обновлять данные друг друга, у вас могут возникнуть проблемы.

3 голосов
/ 16 мая 2011

Да.

Это поместит все данные пользователя в одну и ту же группу объектов, что заставит их все находиться в одном и том же узле хранилища данных. Если вам необходимо часто обновлять данные пользователя, хранение всего в одной группе объектов приведет к увеличению конфликтов при записи и в целом к ​​снижению производительности.

Рекомендуемый шаблон проектирования - поместить 2 объекта в одну группу, когда их необходимо обновить в одной транзакции . В противном случае не используйте их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...