Как я могу скрыть некоторый контент от некоторых пользователей с помощью PHP? - PullRequest
2 голосов
/ 09 января 2009

Я создал интранет для нашей компании, используя PHP. Такое же меню появляется на каждой странице и включает ссылки на конфиденциальные страницы и документы (например, файлы Word).

В настоящее время доступ к сайту имеют только сотрудники, работающие в офисе, но мы хотели бы открыть его для некоторых подрядчиков вне офиса. Суть в том, что мне придется ограничить доступ к определенному контенту.

Я знаю , как защитить паролем каталоги сайтов с помощью Apache , но я бы предпочел скрыть сами параметры меню.

Как бы вы подошли к этому?

Уточнение : Это среда, в которой все входят в нашу сеть Windows, локально или через VPN, но в настоящее время никто не должен входить в систему, чтобы увидеть мой сайт в интрасети. Идеальное решение не требовало бы от них дополнительных действий, если это возможно.

Ответы [ 6 ]

3 голосов
/ 09 января 2009

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

Если ваши пользователи входят в систему, используя Apache, вы можете получить доступ к их имени пользователя из $ _SERVER ['PHP_AUTH_USER']. Поэтому вы можете захотеть сделать что-то вроде этого:

$username = $_SERVER['PHP_AUTH_USER'];
$user_id = lookup_user_id($username); // a function you write that looks up their user id in your database of users

Затем вы можете искать их уровни доступа аналогично - они могут иметь статус пользователя, например, «Гость», «Суперпользователь» или «Администратор», или вы можете захотеть зайти так далеко, иметь матрицу ресурсов и пользователей, указывающую для каждого пользователя и ресурса, может ли этот пользователь иметь доступ к ресурсу.

В противном случае, фреймворк, такой как CakePHP, даст вам подобные вещи (почти) бесплатно.

1 голос
/ 09 января 2009

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

Лучшим подходом было бы использование фреймворка, такого как CakePHP, или платформы, такой как Drupal, в которой уже есть встроенные функции пользователей и ролей, которыми вы можете воспользоваться.

0 голосов
/ 09 января 2009

Возможно, вы могли бы проверить $ _SERVER ['REMOTE_ADDR'] по вашему внутреннему диапазону IP?

0 голосов
/ 09 января 2009

Я думаю, что мне может потребоваться, чтобы пользователи входили в систему (один раз в день?) И отправляли им зашифрованный файл cookie для поддержки этого сеанса.

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

0 голосов
/ 09 января 2009

Это зависит от того, как ваши нынешние сотрудники проходят проверку подлинности. Мы обсуждали это в нашей компании, чтобы некоторые партнеры могли получить доступ к порталу для сотрудников. Мы проводим аутентификацию в базе данных, управляемой нашим программным обеспечением для диспетчеризации, поэтому одним из решений было добавить флажок «Партнер», который сообщал бы скрипту аутентификации для аутентификации в другой базе данных.

Без дополнительной информации сложно описать решение, которое будет хорошо работать для вас.

0 голосов
/ 09 января 2009

Я бы добавил облегченную систему аутентификации пользователей с использованием CodeIgniter.

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

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