Authentication 具有多会话的多登录ZF2

Authentication 具有多会话的多登录ZF2,authentication,zend-framework2,zend-db,zend-auth,Authentication,Zend Framework2,Zend Db,Zend Auth,我有一个应用程序,有3个不同的登录名(3个不同的仪表板)。为了不写重复的代码,我创建了一个适配器和一个插件来登录 现在我如何管理3个不同的会话。如果我登录,登录名1也必须在仪表板2仪表板3上签名,但只能在仪表板1上签名 我该怎么办?多会话多登录。这与身份验证(或登录:知道用户的身份)无关,但与授权(或访问:用户有权访问此页面)无关 您不应该使用不同的登录、不同的会话等来管理授权。只需为用户使用单个标识,并使用授权进行访问。以ACL或RBAC为例,两者都在Zend\Permission中 使用这些

我有一个应用程序,有3个不同的登录名(3个不同的仪表板)。为了不写重复的代码,我创建了一个适配器和一个插件来登录

现在我如何管理3个不同的会话。如果我登录,登录名1也必须在仪表板2仪表板3上签名,但只能在仪表板1上签名


我该怎么办?多会话多登录。

这与身份验证(或登录:知道用户的身份)无关,但与授权(或访问:用户有权访问此页面)无关

您不应该使用不同的登录、不同的会话等来管理授权。只需为用户使用单个标识,并使用授权进行访问。以ACL或RBAC为例,两者都在
Zend\Permission


使用这些权限系统,您可以说:允许此用户X访问仪表板1和3。允许用户Y访问1和2。用户Z只允许访问仪表板1。

这与身份验证(或登录:知道用户的身份)无关,但与授权(或访问:用户有权访问此页面)无关

您不应该使用不同的登录、不同的会话等来管理授权。只需为用户使用单个标识,并使用授权进行访问。以ACL或RBAC为例,两者都在
Zend\Permission


使用这些权限系统,您可以说:允许此用户X访问仪表板1和3。允许用户Y访问1和2。用户Z只允许访问仪表板1。

您应该使用Zend\Permissions\Acl。检查“角色间的多重继承”部分。


但如果您不想使用ACL。那么,为什么不在登录表中添加一个权限列,在登录时添加一个整数(我想是1,2,3…最多7个),将这个整数添加到会话中,然后在每个仪表板上检查权限号,如果不允许访问,则重定向到登录或主页

您应该使用Zend\Permissions\Acl。检查“角色间的多重继承”部分。


但如果您不想使用ACL。那么,为什么不在登录表中添加一个权限列,在登录时添加一个整数(我想是1,2,3…最多7个),将这个整数添加到会话中,然后在每个仪表板上检查权限号,如果不允许访问,则重定向到登录或主页

使用单一登录更有意义,但使用Zend ACL限制访问,并且只向用户显示他们有权访问的选项。使用单一登录更有意义,但使用Zend ACL限制访问,并且只向用户显示他们有权访问的选项。我不能使用表中保存的id,因为表中的日志也不同。一个用于管理网站(cms),另一个用于处理用户(用户配置文件)的登录服务器。我不能使用表中保存的id,因为表中的日志也不同。一个用于管理网站(cms),另一个用于处理用户(用户配置文件)的登录服务器。
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';