Если это код, который вы действительно используете, то функция обратного вызова доступа неверна, так как она должна возвращать TRUE
, когда пользователь, вошедший в систему, имеет доступ к меню, и FALSE
, когда пользователь не делает 'у меня нет доступа к меню.Он не использует die()
.
Это то, что сообщается в документации для hook_menu () :
«обратный вызов доступа»: функция, возвращающаяTRUE
, если у пользователя есть права доступа к этому пункту меню, и FALSE
, если нет.Это также может быть логическая константа вместо функции, и вы также можете использовать числовые значения (будет приведено к логическому).По умолчанию user_access () , если значение не наследуется от родительского пункта меню;только MENU_DEFAULT_LOCAL_TASK элементы могут наследовать обратные вызовы доступа.Чтобы использовать обратный вызов user_access()
по умолчанию, вы должны указать разрешение для проверки в качестве «аргументов доступа».
Если вы не показываете код, который вы используете, то дальнейшие действия могут объяснить поведение, которое вы выполняете.
Первый пользователь, или пользователь # 1, является конкретным пользователем, потому что user_access () всегда возвращает TRUE
для этого пользователя.Это видно из кода этой функции, который явно проверяет, что идентификатор пользователя равен 1.
// User #1 has all privileges:
if ($account->uid == 1) {
return TRUE;
}
Если обратный вызов доступа возвращает FALSE
для аутентифицированных пользователей, и он использует user_access()
,это потому, что прошедшие проверку пользователи не имеют разрешения, переданного функции.
Возможно, вы также проверяете более одного разрешения и используете user_access('first permission') && user_access('second permission')
вместо user_access('first permission') || user_access('second permission')
(или наоборот).Для пользователя # 1 это не имеет значения, в результате user_access('first permission') && user_access('second permission')
и user_access('first permission') || user_access('second permission')
всегда равны TRUE
, даже если вы передаете в функцию строку для разрешения, которое не определено ни в одном модуле.