Auth-> AUTHORIZE =「アクション」を使用してグループではないユーザーに対してアクセス権をチェック
-
26-09-2019 - |
質問
いずれかは私にAuth->authorize = "actions"
の作業を説明することができます
私のプロジェクトでは、私はこれを与えるtpは予定しております。
このには教えてくれた者として認可は、
$this->Aro->check($user,"controllers/:controller/:action")
を呼び出します
この右??
ユーザーに対してチェックされます
その手段は、ユーザーがAROSテーブルに存在しなければなりません。
しかし、私は、ユーザーに対して確認するためにこれを必要としませんが、私はグループに対してチェックする必要があります
どのように私はこれはachiveことができます。
ユーザーがアロテーブルにないとき、今、それは
を示しますだから、アロのが唯一のグループになることとアロスへのユーザーの追加を必要とされている。
事前にthankz
解決
ソリューション
を手に入れました
この参照を使用する
私はCustomAuthにAuthComponentのを拡張し、次のように
isAutorized()
メソッドをオーバーライド
コントローラで/コンポーネント/ 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';
}
) これは私の問題を解決しました
他のヒント
この章のを見てみましょう。グループのアクセス許可を確認するために行う。この(「モデル」と「FOREIGN_KEY」値AROSテーブルからです):
$this->Acl->check(
array('model' => 'Group', 'foreign_key' => 2),
'controller/action'
);
所属していません StackOverflow