首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cakephp基于组的权限

cakephp基于组的权限
EN

Stack Overflow用户
提问于 2011-01-11 17:57:40
回答 2查看 1.3K关注 0票数 3

我希望有组为基础的限制,将允许用户只访问指定的部分的网络。我是ACL的新手,我不是从手册中学到的:/因此我想问几个问题。

但在任何问题之前,我的路线如下所示:

代码语言:javascript
复制
Router::connect('/', array('controller' => 'users', 'action' => 'login'));
Router::connect('/admin/:controller/:action/*', array('prefix' => 'admin', 'admin' => true));
Router::connect('/registered/:controller/:action/*', array('prefix' => 'registered', 'registered' => true));

1.)如何限制来自Administrator以外的任何其他组的用户仅访问web的/registered/部分

2.)如何防止任何人在全球范围内使用www.example.com/users/add等默认地址(我只需要www.example.com/admin/users/addwww.example.com/registered/users/add类型的地址)?这种地址不是在routes.php中设置的事件,但它们仍然有效。

建议回答的任何问题

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-12 23:06:46

好的,这是一个有效的解决方案。(/app/app_controller.php)

代码语言:javascript
复制
function beforeFilter() {               
        if ((isset($this->params['admin']))) {
            $admin_grp = $this->UserGroup->find('first', array(
                'conditions' => array(
                    'UserGroup.name' => 'Administrator')));
            if ($this->Auth->user('user_group_id') != $admin_grp['UserGroup']['id']) {
                $this->Session->setFlash(__('Access denied.', true));
                $this->redirect("/registered");
            } else {
                $this->layout = 'admin';
            }
        } else if (isset($this->params['registered'])) {
            if (!$this->Auth->user()) {
                $this->Session->setFlash(__('Access denied. You need to login first.', true));
                $this->redirect("/users/login");
            }
            $this->layout = 'registered';
        } else {
            $this->layout = 'default';
        }
}
票数 1
EN

Stack Overflow用户

发布于 2011-01-12 00:50:01

首先,这个蛋糕是1.3还是1.2?在1.3中使用前缀路由。您可以设置多个前缀,例如,现在我正在开发一个站点,它需要管理员通过admin/controller/action进行控制,而且我还将某些区域限制为仅限注册用户。例如/users/controller/action。

这相对容易做到,第一步是在你的core.php中设置前缀:

代码语言:javascript
复制
Configure::write('Routing.prefixes', array('admin', 'registered'));

文档记录在这里:http://book.cakephp.org/view/950/Prefix-Routing

Auth组件可以处理这里的其他一切,你可以使用ACL等等,但我没有深入研究这一点,因为对于我目前正在创建的东西来说,它似乎太复杂了。

我发现一个有用的教程是youtube上的Andrew Perkins auth component tutorial,当时我正在学习如何做到这一点。youtube.com/watch?v=FjXAnizmR94

有三个部分,他很好地解释了事情。

祝你好运!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4656335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档