LightOfMooN
Дек. 8, 2010 13:15:20
Опять возвращаюсь к вопросам безопасности:
Как определить, имеет принципал пермишн для какого-либо специфического вида, или нет?
А конкретнее, где взять функцию canView, описанную здесь?
https://mail.zope.org/pipermail/zope3-users/2006-August/004201.htmlЧерез canAccess у меня что-то подобное не выходит.
astoon
Дек. 9, 2010 14:23:22
по ссылке функции canView нету. Там есть только вопрос о том, существует ли подобная функция, и отрицательный ответ на него, читайте внимательнее :)
Нет существует никаких пермишн для видов.
При использовании zope.securitypolicy права (т.н. security checker'ы) определяются на локальных объектах (т.е. реализующих протокол zope.location.ILocation) путем “оборачивания” их в security прокси.
Эти локальные объекты играют роль “контекста” в видах. Такая система вполне удобна и гибка, поэтому данный secirity policy “включен” в фреймворках по умолчанию.
Когда Вы пишете <browser:page name=“foo” for=“IBar” …. permission=“baaz.View” /> это декларирует вид, доступный тем принципалам, которые имеют доступ “baaz.View” к локальному объекту (IBar), являющемуся контекстом для указанного вида.
Поэтому нужно использовать canAccess, определяя права относительно локальных объектов.