Я создаю сайт, который дает каждому пользователю частную домашнюю страницу с содержимым, которое они могут видеть, но другие не могут. Обратный вызов в обработчике _menu позволяет получить доступ, если пользователь является владельцем страницы и отрицает это иначе; там все хорошо.Drupal: доступ запрещен, но я получаю контент в любом случае
Я только что переработал эту страницу, чтобы ее содержимое состояло из набора ящиков вместо большого мешка с кодом. Содержимое собралось правильно, но с проблемой: если пользователь A смотрит на личную страницу пользователя B, он получает страницу «Отказано в доступе», как он должен. Тем не менее, блоки все еще вызывают, и их содержимое по-прежнему заканчивается на странице, так что пользователь A может видеть личные вещи пользователя B. На странице также нет обычного «У вас нет доступа к этой странице». сообщение, которое обычно отображается на странице «Отказано в доступе».
У меня полная потеря, чтобы понять, почему это происходит. Я могу блокировать блоки, предоставляя им некоторые правильно спроектированные функции «Показывать блок на определенных страницах», но все же происходит что-то, что (а) не кажется правильным и (б) я не понимаю. Вместе это дает мне плохое/смешное чувство о том, что происходит с контролем доступа для сайта, особенно в том, как оно относится к блокам. Может ли кто-нибудь предложить здесь прозрение? Благодаря!
Это именно то, что я делаю - запись для страницы в обработчике _menu моего модуля имеет «обратный вызов доступа» _access_canEditUserPage, который пропускается UID пользователя (извлеченный из URL страницы и передается через «аргументы доступа» -> массив (1)). _access_canEditUserPage подтверждает, что пользователю разрешено видеть страницу и возвращает значение true или false, в зависимости. Это (я думаю) - это то, что вызывает страницу «Отказано в доступе», и именно поэтому я смущен тем, что содержимое блока продолжает появляться. FWIW, журналы apache подтверждают, что на запрос страницы отвечает код ошибки 403. –