it-swarm.asia

كيفية تجاوز node_access عند استخدام EntityFieldQuery؟

باستخدام الكود التالي ، إذا لم يكن لدى المستخدم الحالي "إمكانية الوصول إلى العقدة الالتفافية" (انظر _ node_query_node_access_alter () للتحقق بدقة) ، عندئذٍ يتحقق الاستعلام من node_access ، على الرغم من أنني لا أستخدم "node_access " بطاقة شعار.

كيف يمكنني تجنب فحص node_access باستخدام الاستعلام التالي لمستخدم غير إداري؟

أنا أستخدم هذا الرمز من وحدة نمطية ، حتى أتمكن من التحقق من الأذونات بنفسي ، ولا حاجة إلى عمليات فحص node_access.

  $query = new EntityFieldQuery;
  $result = $query
    ->entityCondition('entity_type', 'node')
    ->entityCondition('bundle', 'foo')
    ->fieldCondition('custom_id', 'value', $custom_id)
    ->execute();
12
Weboide

يسمح لك Drupal 7.15 بتجاوز الوصول على العقدة.

راجع تمت إضافة DANGEROUS_ACCESS_CHECK_OPT_OUT علامة استعلام إلى EntityFieldQuery لمزيد من المعلومات.

تمت إضافة علامة استعلام "DANGEROUS_ACCESS_CHECK_OPT_OUT" إلى EntityFieldQuery للسماح بتجاوز عمليات فحص الوصول. في السابق ، كانت الاستعلامات المنفذة من خلال EntityFieldQuery دائمًا ما يتم تعديلها بواسطة نظام الوصول إلى العقدة ، مما قد يتسبب في سلوك غير متوقع وفقدان البيانات.

إذا كنت بحاجة إلى تجاوز عمليات التحقق من الوصول في استعلام داخلي داخل واجهة برمجة التطبيقات للوحدة النمطية الخاصة بك ، فيمكنك إضافة هذه العلامة ، ولكن يجب عليك القيام بذلك فقط إذا لزم الأمر. إذا تمت إضافة علامة الاستعلام هذه إلى استعلام سيتم عرض نتائجه للمستخدم ، فستتجاوز جميع عمليات فحص الوصول ، مما قد يعرض المعلومات الحساسة.

function MYMODULE_field_query($field) {
  $query = new EntityFieldQuery();
  return $query
    ->fieldCondition($field)
    ->addTag('DANGEROUS_ACCESS_CHECK_OPT_OUT')
    ->execute();
}
26
user9221

الجواب هو أنك لا تستطيع.

الحل الوحيد الذي يمكنني التفكير فيه لإضافة account البيانات الوصفية:

$query = new EntityFieldQuery;
$result = $query
  ->entityCondition('entity_type', 'node')
  ->entityCondition('bundle', 'foo')
  ->fieldCondition('custom_id', 'value', $custom_id)
  ->addMetaData('account', user_load(1))
  ->execute();

تحرير: أ DANGEROUS_ACCESS_CHECK_OPT_OUT تمت إضافة الخيار كجزء من Drupal 7.15 إصدار الأمان.

11
Damien Tournoud