1

誰かが私にの働きを説明できますかAuth->authorize = "actions"
私のプロジェクトでは、私はこれを与えることを計画しています。
これ私に教えたように、承認者は$this->Aro->check($user,"controllers/:controller/:action")

これはユーザーに対してチェックしますか?
つまり、ユーザーはarosテーブルにいる必要があります。
しかし、ユーザーに対してチェックするためにこれは必要ありませんが、グループに対してチェックする必要があります。これを達成するに
はどうすればよいですか。

これで、ユーザーがAroテーブルにいない場合は、

Aroがグループのみになり、Arosにユーザーを追加する必要があるように

よろしくお願いします

4

2 に答える 2

1


この参照を使用してソリューションを
取得しました。AuthComponentをCustomAuthに拡張し、isAutorized()次のようにAuthComponentのメソッドをオーバーライドしました。

controllers / components/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';
}

これで私の問題は解決しました:)

于 2010-08-07T12:31:46.910 に答える
0

このをご覧ください。グループ権限を確認するには、次のようにします(「model」および「foreign_key」の値はarosテーブルからのものです)。

$this->Acl->check(
     array('model' => 'Group', 'foreign_key' => 2),
    'controller/action'
);
于 2010-08-05T17:06:48.150 に答える