Drupal: доступ запрещен, но я все равно получаю контент - PullRequest
0 голосов
/ 14 января 2011

Я создаю сайт, который дает каждому пользователю личную домашнюю страницу с контентом, который они могут видеть, но другие не могут. Обратный вызов в обработчике _menu разрешает доступ, если пользователь является владельцем страницы, и запрещает его в противном случае; там все хорошо.

Я только что пересмотрел эту страницу, так что ее содержимое состоит из набора блоков вместо большого пакета кода. Содержимое собирается правильно, но с проблемой: если пользователь A смотрит на личную страницу пользователя B, он получает страницу «Отказано в доступе», как и должен. Однако блоки по-прежнему вызываются, и их содержимое по-прежнему попадает на страницу, так что пользователь A может видеть личные вещи пользователя B. Страница также не получает обычного «Вы не авторизованы для доступа к этой странице». сообщение, которое обычно отображается на странице «Отказано в доступе».

Я в полном недоумении, чтобы понять, почему это происходит. Я могу помешать блокам работать, предоставив им некоторые правильно разработанные функции «Показать блок на определенных страницах», но все еще происходит что-то, что (а) кажется неправильным и (б) я не понимаю. В совокупности это вызывает у меня плохое / смешное чувство о том, что происходит с контролем доступа к сайту, особенно в том, что касается блоков. Кто-нибудь может предложить какое-либо понимание здесь? Спасибо!

1 Ответ

0 голосов
/ 14 января 2011

Вы должны создать функцию обратного вызова доступа в вашем меню ловушек, чтобы выполнить проверку доступа.В противном случае пользователю разрешено просматривать контент, даже если вы ничего не визуализируете.Поскольку блоки не создаются с помощью обратного вызова меню, они отображаются нормально.

Для справки см .: hook_menu

...