2015-01-08 5 views
3

Допустим, что есть такие ресурсы, как файлы. Кто, когда, где есть доступ к отдельному файлу, не является проблемой. Предположим, что есть ресурс, такой как каталог, который имеет свои собственные атрибуты и содержит другие файлы, каталоги и/или некоторые другие элементы. Теперь есть пользователь, который имеет доступ к каталогу, но не имеет доступа (даже чтобы увидеть имя/заголовок) для некоторых файлов или поддиалектов.Фильтр коллекции на основе разрешения

Как фильтровать каталог, содержащий только файлы, к которым пользователь может получить доступ, если решение политики отделено от бизнес-логики. Должен ли я проверять каждый файл отдельно?

Если да, то если каталог содержит 10M файлов, и пользователь имеет доступ только к нескольким файлам, как идентифицировать эти файлы?

ответ

1

Прежде всего, вам нужно решить, что такое ресурс: это папка, файл? Файл из абстрактного смысла (что означает как папку, так и файл)? Можно ли просмотреть файл в том случае, если вы можете просмотреть его предков? Другими словами, существует иерархия.

Подставив эти вопросы в стороне, есть два подхода, которые можно предпринять, когда речь идет о доступе контроля над большим набором данных:

  1. Используйте Multiple Decision Profile для создания запроса на авторизацию для нескольких элементов. Запрос запроса на несколько запросов (MDP) будет выглядеть так: Может ли Алиса просматривать файлы A и B и C и ... Z? PDP ответит так же много решений, сколько предметов в исходном вопросе. MDP хорошо работает для товаров в пределах тысяч или менее.
  2. В случае, когда у вас очень много элементов или неизвестное количество элементов, вы можете запустить reverse process called reverse query (ARQ), вместо этого, вместо того, чтобы задавать вопрос «Да/Нет», вы задаете открытый вопрос, например. Скажите, какие файлы Алиса может посмотреть. PDP ответит выражением фильтра, например. Разрешить, если docStatus == draft AND docDept = Продажи. Затем вы должны были бы PEP перевести фильтр в подходящий фильтр, например. Фильтр файлов.
+1

Файл/каталог является лишь примером для иллюстрации проблемы. Я думаю, что второй вариант ближе к решению, о котором я думал. – Albert

+1

Привет, у вас есть 404 по ссылкам с вашего сайта :( –

+0

Спасибо, теперь я исправил ссылки –