检查使用Auth-对组而不是用户权限>授权=“行动”(check permission aga

2019-09-30 08:50发布

任何一个可以解释我的工作Auth->authorize = "actions"
在我的项目我计划TP给这个。
由于该教我的授权将调用$this->Aro->check($user,"controllers/:controller/:action")

这将检查对用户权限?
这意味着用户应该有在阿罗斯表。
但我不需要这个要检查用户,但我需要检查针对一组
我怎样才能实现这一目标。

现在,当用户不在阿罗表它显示了

从而使阿罗的将是唯一的组和用户的增加了阿罗斯需要

thankz提前

Answer 1:

得到了解决
使用此参考
我延长AuthComponent到CustomAuth和重写的isAutorized()在AuthComponent方法如下

在控制器/组件/ custom_auth.php

    <?php
App::import('Component','Auth');
class CustomAuthComponent extends AuthComponent {

    public function isAuthorized($type = null, $object = null, $user = null) {

        $actions  = $this->__authType($type);
        if( $actions['type'] != 'actions' ){
            return parent::isAuthorized($type, $object, $user);
        }
        if (empty($user) && !$this->user()) {
            return false;
        } elseif (empty($user)) {
            $user = $this->user();
        }


        $group = array('model' => 'Group','foreign_key' =>$user['Login']['group_id']);
        $valid = $this->Acl->check($group, $this->action());
        return $valid;
    }
}
?>

在app_controller.php

function beforeFilter()
{
$this->CustomAuth->userModel = 'Login';
$this->CustomAuth->allowedActions = array('display');
$this->CustomAuth->actionPath = 'controllers/';
$this->CustomAuth->authorize = 'actions';
}

这解决了我的问题:)



Answer 2:

看看这个在章 。 要检查组权限做到这一点(“模型”和“foreign_key”值从阿罗斯表):

$this->Acl->check(
     array('model' => 'Group', 'foreign_key' => 2),
    'controller/action'
);


文章来源: check permission against group not users using Auth->authorize=“actions”