Zend_Acl、Zend_Auth 和模块

发布于 2024-12-14 05:27:26 字数 841 浏览 2 评论 0 原文

我正在尝试绕过 Zend_Acl 但到目前为止没有成功。我需要帮助,因为我真的陷入困境。我的情况是这样的:

我有两个模块

  • 成员
  • 管理员

和两个角色

  • 成员
  • 管理员

我设置了一个 Zend_Auth ,其登录名可以访问成员模块的成员角色和管理员角色。两者都可以在这里执行一些操作,但管理员角色还可以访问“管理员”模块,在其中可以执行更多管理员操作。

我设置了一个 Acl,如下所示:

$acl = new Zend_Acl();

$acl->addRole(new Zend_Acl_Role('member'));
$acl->addRole(new Zend_Acl_Role('admin'), 'member');

$acl->add(new Zend_Acl_Resource('members'));
$acl->add(new Zend_Acl_Resource('administrators'), 'members');

$acl->allow('member', 'members'); 
$acl->allow('admin',  'administrators');


$registry = Zend_Registry::getInstance();
$registry->set('acl', $acl);

我已保存此文件,并在 index.php 页面中调用它。

假设我到目前为止所做的都是正确的,我的问题是下一步该怎么做?这是我第一次处理 Acl,老实说我对 all think 的工作有点困惑。你能帮忙吗?预先非常感谢。

I am trying to get around Zend_Acl but had no success so far. I need help as I am really stuck. My situation is this:

I have two modules

  • members
  • administrators

and two roles

  • member
  • admin

I set up an Zend_Auth with a login that gets to the members module both the member and admin role. Both can do some stuff here but the admin role can also have access to the 'administrators' module where can do more administrator stuff.

I set up an Acl as follow:

$acl = new Zend_Acl();

$acl->addRole(new Zend_Acl_Role('member'));
$acl->addRole(new Zend_Acl_Role('admin'), 'member');

$acl->add(new Zend_Acl_Resource('members'));
$acl->add(new Zend_Acl_Resource('administrators'), 'members');

$acl->allow('member', 'members'); 
$acl->allow('admin',  'administrators');


$registry = Zend_Registry::getInstance();
$registry->set('acl', $acl);

I have saved this file and I am calling it in the index.php page.

Assuming the what I have done so far is correct, my problem is what to do next? It is the first time I deal with Acl and honestly I am a bit confused about the all think works. Could you please help? Thank very much in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

思念绕指尖 2024-12-21 05:27:26

您已经构造了 ACL 对象。您现在就需要使用它,每次您需要检查当前用户是否有权访问其中一项资源时。

为此,您需要从注册表中检索 ACL 对象:

$acl = Zend_Registry::get('acl');

然后查询它:

if ($acl->isAllowed($yourUser, 'members')) {
  // Do the job
} else {
  // some message or redirection
}

您可以在 Zend_Acl 文档

希望有帮助,

You have constructed the ACL object. You need to use it now, every time you need to check whether the current user has access to one of the resources.

To do so, you need to retrieve your ACL object from the registry:

$acl = Zend_Registry::get('acl');

And then query it:

if ($acl->isAllowed($yourUser, 'members')) {
  // Do the job
} else {
  // some message or redirection
}

You can see more details in the Zend_Acl documentation.

Hope that helps,

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文