Как вы храните эту информацию, полностью зависит от вас.Ваша реализация Realm
отвечает за запрос любого источника данных, который вы используете, и извлечение данных разрешений в формате, который вы предпочитаете.
Некоторые люди хранят их как строки напрямую (как показано в вашем примере), другие хранятих в специальной таблице (например, если используется СУБД) (например, тип_позволения, цель, столбцы действий).Вы можете связать объекты разрешений с ролями или напрямую с пользователями или с группами, которые назначены пользователям и т. Д., Однако это имеет смысл для вашего приложения.
Ваши варианты хранения полностью зависят от вас.Вы материализуете данные, как хотите, чтобы обеспечить правильную функциональную функцию Realm.isPermitted(...)
.
Вместо непосредственной реализации методов Realm.isPermitted(...)
многим людям удобнее создавать подкласс абстрактного класса AuthorizingRealm
и переопределять его.doGetAuthorizationInfo
метод и возврат AuthorizationInfo
экземпляров, которые поддерживают представления разрешений.
В этом методе вы можете запросить ваше хранилище данных, перевести возвращенные данные в AuthorizationInfo
экземпляры, и все будет сделано (нене забудьте включить кэширование авторизации - вы увидите значительное повышение производительности).
Переопределение методов Realm
isPermitted
необходимо только в том случае, если требуется очень специфический контроль над запросами и т. д.