Проверка пользователя


у Меня есть программа, которая имеет 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>
 1
Author: Bruno, 2014-05-26

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, то число, которое определяет в каждой).

 1
Author: Felipe, 2014-05-26 16:04:46

Вы можете быть создание список управления доступом, разрешения, которые пользователь имеет на основе вашего профиля внутри системы. Библиотека, которая предоставляет инфраструктуру для этого, это Zend_Acl.

ACL состоит из трех основных функций, это:

  1. Профиля (Role)
  2. Функции (Resource)
  3. Разрешений (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, а также предоставление льгот для отдельных только своей уникальной группы. Разрешения могут быть выражены следующим образом:

inserir a descrição da imagem aqui

, например, 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

Дополнительное Чтение по поводу:

 1
Author: stderr, 2014-05-26 16:10:56