تحقق من الإذن ضد المجموعة وليس المستخدمين الذين يستخدمون Auth-> Authorize = "الإجراءات"
-
26-09-2019 - |
سؤال
هل يمكن لأي شخص أن يشرح لي عمل Auth->authorize = "actions"
في مشروعي ، أخطط لـ TP أعط هذا.
مثل هذه علمني أن التصريح سوف يدعو إلى $this->Aro->check($user,"controllers/:controller/:action")
هذا سوف تحقق ضد اليمين المستخدم ؟؟
هذا يعني أن المستخدم يجب أن يكون هناك في جدول AROS.
لكنني لست بحاجة إلى التحقق من المستخدم ولكن أحتاج إلى التحقق من مجموعة
كيف يمكنني تحقيق هذا.
الآن عندما لا يكون المستخدمون في جدول ARO ، فإنه يظهر
بحيث تكون هناك حاجة إلى مجموعات ARO فقط وإضافة المستخدمين إلى AROS
شكرا مقدما
المحلول
حصلت على الحل
باستخدام هذا المرجعي
لقد قمت بتوسيع المكون إلى 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';
}
هذا حل مشكلتي :)
نصائح أخرى
تفقد هذا الفصل. للتحقق من إذن المجموعة ، قم بذلك (قيم "النموذج" و "Foreign_key" من جدول AROS):
$this->Acl->check(
array('model' => 'Group', 'foreign_key' => 2),
'controller/action'
);