it-swarm.asia

وحدة المشاهدات: كيفية تقييد وصول المستخدم

أستخدم وحدة طرق العرض لإنشاء طريقة عرض لا يمكن الوصول إليها إلا لمستخدمين محددين. أعلم أن طرق العرض تتضمن التحكم في الوصول عن طريق الدور أو الأذونات ، لكنني بحاجة إلى شيء أكثر دقة: في الأساس ، أريد أن أكون قادرًا على القول فقط أن المستخدم "x" والمستخدم "y" يمكنه الوصول إلى عرض معين (أو شخص آخر لديه دور مسؤول الموقع). لذا فإن هذا سيعمل بشكل مشابه جدًا لكيفية عمل وحدة ACL للعقد الفردية.

هل أفضل طريقة لإنشاء مكون إضافي مخصص للوصول إلى طرق العرض؟ ليس لدي الكثير من الخبرة في هذا.

أيضًا ، أتساءل عن استخدام حجة مع بعض التحقق من الصحة لتحقيق ذلك (حتى لا أضطر إلى إنشاء عشرات المشاهدات المنفصلة). على سبيل المثال ، نظرًا لأن طريقة العرض هذه ستكون علامة تبويب على مسار عقدة معين ، أتساءل عن إعداد حقل مرجعي للمستخدم على تلك العقدة يحدد من يمكنه مشاهدة العرض. سأحتاج فقط إلى طريقة للتحقق من صحة العرض فقط إذا كان المستخدم الحالي يساوي مستخدمًا محددًا في الحقل المرجعي للمستخدم.

أيه أفكار؟ أو هل أجعل هذا أكثر تعقيدًا مما يجب أن يكون؟

شكرا بن

8
BenK

بدلاً من تحديد الأذونات على طريقة العرض ، يمكنك تحديد الأذونات على عنصر القائمة الذي يؤدي إلى هذا العرض (سواء كان علامة تبويب على عقدة أو استدعاء قائمة). يمكنك إنشاء طريقة العرض الخاصة بك فقط باستخدام شاشة "افتراضيات" وبدون عرض صفحة (لذلك لا يمكن للمستخدمين تحديد مسارها). ثم في page callback لعنصر القائمة ، ما عليك سوى الاتصال views_embed_view لعرض العرض. يبدو أن التعامل مع الأذونات في عنصر قائمة قد يكون أسهل من كتابة مكون إضافي جديد في طرق العرض (على الرغم من أن المكون الإضافي قد يكون مفيدًا للآخرين).

5
Chaulky

جرب Access Access Callback الوحدة النمطية.

يوفر التحكم بالوصول القائم على رد الاتصال لطرق العرض.

يتم تعريف وظائف رد الاتصال المتاحة من خلال الوحدات النمطية باستخدام hook_views_access_callbacks() function (بنفس الطريقة كما في hook_perm()) ، ثم يمكن تعيينها في تكوين "قيود الوصول" للعرض.

6
user5318

يجب أن أفتقد شيئًا ، ولكن يبدو أنك ستنشئ دورًا جديدًا وتضيف هؤلاء المستخدمين. ثم استخدم وصول طرق العرض: ميزة الدور.

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

إذا كنت تخفي فقط عنصر قائمة ، فيبدو لي أن العرض سيظل يعمل ويمكن للمستخدم تعديل قرص URI لعرض البيانات.

جيري

2
Jerry

ماذا عن استخدام أذونات مخصصة وحدة لإنشاء بعض الأذونات الجديدة خصيصًا لغرضك ، ثم استخدام أذونات المستخدم وحدة لتعيين تلك الأذونات الجديدة للمستخدمين الفرديين؟

وحدة الأذونات المخصصة خفيفة الوزن للغاية. لست متأكدًا جدًا من وحدة أذونات المستخدم ، نظرًا لأنها تنشئ بشكل أساسي دورًا جديدًا لكل مستخدم خلف الكواليس (هذه الأدوار غير مرئية في صفحة الأذونات الرئيسية). إذا كان لديك الكثير من المستخدمين ، فقد يؤدي ذلك إلى زيادة حجم أدوارك وجداول user_roles قليلاً.

1
Tom Kirkpatrick

إذا كنت ترغب في دمج مكونات وصول مختلفة في طرق العرض ، فقد تحتاج إلى إلقاء نظرة على الوحدة طرق عرض كثيرة .

0
Steven Jones

صحيح ، هذا منطقي أكثر. أعتقد أنه يمكنك (ربما ، ليس متأكدًا بنسبة 100 ٪) استخدام طريقة العرض والحجة. قم بتعيين الوسيطة لتكون معرف مستخدم مأخوذ من المستخدم الذي قام بتسجيل الدخول حاليًا واجعل الوسيطة الافتراضية لا تعرض أي شيء. يجب أن يكون ذلك قادرًا على القيام بذلك ، على الرغم من أنني لا أعرف مدى الأمان الذي سيكون منصفًا. إذا جربته ، فأعد النشر وأعلمني بتقدمك.

0
Jamie Hollern