Drupal JQuery условное действие пользователя - PullRequest
0 голосов
/ 28 июля 2011

Интересно, есть ли способ использовать Jquery для определения, является ли пользователь администратором, и позволяет им щелкнуть ссылку. Для всех пользователей с правами администратора на указанной ссылке активна e.preventDeafult () .

Возможно ли это кому-нибудь?

Ответы [ 3 ]

1 голос
/ 29 июля 2011

Вы можете использовать AJAX, но если у пользователя не включен javascript, он все равно перейдет к месту назначения ссылки.

Другим подходом было бы просто отключить отображение ссылки, если пользователь не является администратором.

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

0 голосов
/ 17 августа 2011

Я обнаружил это, пытаясь найти способ отображать только сообщения отладки для администраторов. Каждый сайт, который я создаю, использует модуль меню администратора, поэтому я просто проверяю, определен ли $ ('body.admin-menu div # admin-menu'), так как он будет отображаться только для тех ролей, для которых я его настроил.

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

0 голосов
/ 28 июля 2011

Поскольку JS запускается в браузере, не существует полного способа сделать это (ваш код JS всегда можно изменить).Но вот два решения.Первый менее надежен, чем второй, но намного проще и предлагает лучший пользовательский опыт.

  1. Пусть ваш шаблон php отобразит скрытый div, содержащий значение (например, true илиfalse) что ваш код jQuery может получить доступ, чтобы определить, является ли пользователь администратором.

  2. Сделайте, чтобы ссылка действительно выполняла запрос AJAX.Таким образом, определение может быть выполнено PHP в URL-адресе, к которому сделан запрос.

# 1 легче взломать, поскольку он предоставляет два места для взлома: 1)Значение DOM (true или false) и 2) Код в самом скрипте (если вы не знали, это может быть изменено пользователем на лету).

# 2 предлагает только второй изэти сценарии.

НО, это, очевидно, более сложно, и, поскольку оба они взломаны, и пользователь - это кто-то заслуживающий доверия, я полагаю (так как это администратор), я бы просто пошел с # 1.

На самом деле я делаю подобные вещи довольно часто на своем сайте в Drupal.Конечно, никогда там, где это может создать проблему безопасности (т. Е. Если я делаю AJAX-запрос, я никогда не верю, что мой JS отправляет на сервер права входа в систему uid; вместо этого я всегда использую глобальный $ user в PHP).код, обрабатывающий запрос).

...