2013-06-19 2 views
0

У меня есть приложение с 3 различными входами (3 различных панели). Чтобы не писать дубликат кода, я создал адаптер и плагин для входа в систему.Multi Login ZF2 с несколькими сеансами

Теперь, как я могу управлять 3 различными сеансами. Если я запустил вход в систему, вход 1 также должен быть подписан на приборной панели 2 панели приборов, но только на приборной панели 1.

Как я могу справиться с этим? мультисеанс для множественного входа.

+0

Было бы разумнее использовать единый логин, но использовать Zend ACL для ограничения доступа и показывать пользователям только те параметры, к которым у них есть доступ. – Andrew

ответ

2

Это не имеет никакого отношения к аутентификации (или логин: знать, что такое идентификатор пользователя), но авторизация (или access: имеет право пользователя на эту страницу).

Вам не следует управлять авторизацией с разными логинами, разными сеансами и т. Д. Просто используйте один идентификатор для пользователя и используйте авторизацию для доступа. Возьмите пример с ACL или RBAC, как внутри Zend\Permission.

С помощью этих систем разрешений, вы можете сказать: этот пользователь X разрешен доступ к приборной панели 1 и 3. Пользователь Y имеет право доступа 1 и 2. Пользователь Z разрешено только посетить Dashboard 1.

1

Вы должны использовать Zend \ Permissions \ Acl. Проверьте раздел «Множественное наследование среди ролей». http://framework.zend.com/manual/2.0/en/modules/zend.permissions.acl.intro.html

use Zend\Permissions\Acl\Acl; 
use Zend\Permissions\Acl\Role\GenericRole as Role; 
use Zend\Permissions\Acl\Resource\GenericResource as Resource; 

$acl = new Acl(); 

$acl->addRole(new Role('guest')) 
    ->addRole(new Role('member')) 
    ->addRole(new Role('admin')); 

$parents = array('guest', 'member', 'admin'); 
$acl->addRole(new Role('someUser'), $parents); 

$acl->addResource(new Resource('someResource')); 

$acl->deny('guest', 'someResource'); 
$acl->allow('member', 'someResource'); 

echo $acl->isAllowed('someUser', 'someResource') ? 'allowed' : 'denied'; 

Но в случае, если вы не хотите использовать ACL. то почему бы вам не добавить в свою регистрационную таблицу столбец разрешений целое число (1,2,3 ... до 7, я думаю) при входе в систему добавить это целое число в сеанс, а на каждой панели мониторинга вы проверяете номер разрешения, если нет разрешенный доступ, то вы перенаправляетесь на логин или домашнюю страницу.

+0

Я не могу использовать идентификатор, сохраненный в таблице, потому что журнал также отличается в таблицах. Один служит для администрирования веб-сайта (cms) и других серверов входа для обработки пользователя (профиля пользователя). –