Проверка пользователя
у Меня есть программа, которая имеет 5 níveis de autorização
, Administrador
, Gerente
, Operador
, Usuário
Convidado
.
Но для каждого уровня единой разных доступ к системе.
Эскиз проверка:
<?
include("../sai_clas/sai_conecta.php");
?>
<? if($_SESSION("cb_acess_usua") == 0) {
Chama os dados validos para o administrador!
}
?>
В случае, если код выше sai_conecta.php
- это то, что держит мое соединение с Базой данных. Ai затем выполняется проверка, чтобы определить, является ли код доступа пользователя равен 0 (в случае, если бы администратором), где, если имеет все данные к нему разрешенный.
Примечание: я Не знаю, если этот код. выше правы, это только заготовка!
Моем сомневается в себе, как это сделать, дай назвать данные, как уровень авторизации!
Я называю эту проверку через главное меню, которое, когда пользователь выберите опцию' он будет открыть только те данные, которые допускаются к нему!
. Пример часть меню:
<div class="menuitem" onmouseover="over(2)" onmouseout="out(2)">
<a href="../sai_prin/menu_com_abas_dist">
<font face="arial" >Distribuição</a>
</div>
2 answers
Более эффективный способ, вы не могли бы определить, проверка в меню выбора.
Например:
<div class="menuitem" onmouseover="over(2)" onmouseout="out(2)">
<?
if($_SESSION['SS_cb_aces_usua']<2)
{
echo'<a href="../sai_prin/menu_com_abas_dist.php">Distribuição</a>';
}
?>
</div>
Как вы определили в коде, при нажатии на распределение он бы отдельное меню. В хпк выше, он выполняет проверку с указанием данных, только для тех, кто имеет авторизации от 0 до 2 (не знаю, что сказать, если будет от 0 до 5, то число, которое определяет в каждой).
Вы можете быть создание список управления доступом, разрешения, которые пользователь имеет на основе вашего профиля внутри системы. Библиотека, которая предоставляет инфраструктуру для этого, это Zend_Acl
.
ACL состоит из трех основных функций, это:
- Профиля (Role)
- Функции (Resource)
- Разрешений (Permissions)
Профиля
Код ниже определяет три профили основе - guest
, membro
admin
-, из которого другие профили могут наследовать. А затем, профиль, выявленные someuser
установлено и наследует три других профилей. Порядок, в котором эти обои отображаются в массиве $parents
важно.
При необходимости, Zend_Acl поиск правила доступа не только для профиля консультации (someuser
), но также о том, профилей, из которых профиль наследует консультации (guest
, membro
и admin
):
$acl = new Zend_Acl();
$acl->addRole(new Zend_Acl_Role('guest'))
->addRole(new Zend_Acl_Role('member'))
->addRole(new Zend_Acl_Role('admin'));
$parents = array('guest', 'member', 'admin');
$acl->addRole(new Zend_Acl_Role('someUser'), $parents);
$acl->add(new Zend_Acl_Resource('someResource'));
$acl->deny('guest', 'someResource');
$acl->allow('member', 'someResource');
echo $acl->isAllowed('someUser', 'someResource') ? 'allowed' : 'denied';
Создать Список контроля Доступа)
Список контроля доступа(ACL) может представлять любой набор физических или виртуальных объектов, которые вы хотите. Для демонстрации, тем не менее, мы создадим , Системы Управления основное Содержание (CMS), ACL, который поддерживает несколько слоев и групп в самых разнообразных областях. Чтобы создать новый объект ACL
, мы instanciaremos ACL
без параметры:
$acl = new Zend_Acl();
CMS почти всегда требует иерархии разрешений, чтобы определить возможности создания своих пользователей. Это может быть группа Guest
, чтобы разрешить ограниченный доступ для демонстрации, группа Staff
для большинства пользователей, от CMS которые выполняют большую часть операций день в день, группа Editor
тех, кто отвечает за публикации, обзор, архивирование и удаление содержимого, и, наконец, группа Administrador
, чьи задачи могут включать в себя все из других групп, а также сохранение конфиденциальной информации, управление пользователями, резервное копирование и экспорт.
Этот набор разрешений может быть представлен в запись профиля, позволяя каждой группе наследует привилегии группы pai
, а также предоставление льгот для отдельных только своей уникальной группы. Разрешения могут быть выражены следующим образом:
, например, Zend_Acl_Role
используется, но любой объект, который реализует Zend_Acl_Role_Interface
приемлемо. Эти группы могут быть добавлены к профилю журнала, следующим образом:
$acl = new Zend_Acl();
// Adiciona grupos para o perfil de registro usando Zend_Acl_Role
// O guest não herda os controles de acesso
$roleGuest = new Zend_Acl_Role('guest');
$acl->addRole($roleGuest);
// Staff herda o guest
$acl->addRole(new Zend_Acl_Role('staff'), $roleGuest);
/*
Alternativamente, o acima pode ser escrito:
$acl->addRole(new Zend_Acl_Role('staff'), 'guest');
*/
// Editor de herda de Staff
$acl->addRole(new Zend_Acl_Role('editor'), 'staff');
// Administrador não herda os controles de acesso
$acl->addRole(new Zend_Acl_Role('administrator'));
Теперь, что ACL содержит профили, соответствующие правила могут быть установлены, которые определяют, как функции могут быть доступны с помощью профилей. Не было установлено каких-либо конкретных ресурсов для этого примера, это упрощенный, чтобы показать, что правила применяются ко всем ресурсам. Zend_Acl
обеспечивает осуществление в - правила должны быть назначены общие конкретной, сводя к минимуму количество необходимых правил, поскольку функции и функции наследуют правила, заданные о своих предках.
Следовательно, мы можем определить набор достаточно сложных правил, с минимальным количеством кода. Для установки разрешения базы, как определено выше:
$acl = new Zend_Acl();
$roleGuest = new Zend_Acl_Role('guest');
$acl->addRole($roleGuest);
$acl->addRole(new Zend_Acl_Role('staff'), $roleGuest);
$acl->addRole(new Zend_Acl_Role('editor'), 'staff');
$acl->addRole(new Zend_Acl_Role('administrator'));
// Somente guests podem visualizar o conteúdo
$acl->allow($roleGuest, null, 'view');
/*
Alternativamente, o acima pode ser escrito:
$acl->allow('guest', null, 'view');
//*/
// Staff herda o privilégio de ver/view de guest, mas também precisa de privilégios
// adicionais
$acl->allow('staff', null, array('edit', 'submit', 'revise'));
// Editor herda os privilégios "visualizar, editar, enviar", e "revisar" de
// staff, mas também precisa de privilégios adicionais
$acl->allow('editor', null, array('publish', 'archive', 'delete'));
// Administrador não herda nada, mas é permitido todos os privilégios
$acl->allow('administrator');
Запросить ACL
У Нас ACL гибкие который может быть использован, чтобы определить, является ли претендент имеет разрешение для выполнения функций по всему веб-приложению. Проведение консультаций является достаточно простым, используя метод isAllowed()
:
echo $acl->isAllowed('guest', null, 'view') ?
"allowed" : "denied";
// permitido
echo $acl->isAllowed('staff', null, 'publish') ?
"allowed" : "denied";
// negado
echo $acl->isAllowed('staff', null, 'revise') ?
"allowed" : "denied";
// permitido
echo $acl->isAllowed('editor', null, 'view') ?
"allowed" : "denied";
// permitido por causa da herança de guest
echo $acl->isAllowed('editor', null, 'update') ?
"allowed" : "denied";
// negado, porque não há nenhuma regra para permitir "update"
echo $acl->isAllowed('administrator', null, 'view') ?
"allowed" : "denied";
// permitido porque para administrador é permitido todos os privilégios
echo $acl->isAllowed('administrator') ?
"allowed" : "denied";
// permitido porque para administrador é permitido todos os privilégios
echo $acl->isAllowed('administrator', null, 'update') ?
"allowed" : "denied";
// permitido porque para administrador é permitido todos os privilégios
Дополнительное Чтение по поводу: