سؤال

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

هل كانت مفيدة؟

المحلول

كما يقول مارتن بين ، يمكنك استخدام ACL. بالنسبة لموقع متطور ، سيكون ذلك خياري. ليس عليك تسجيل الدخول للوصول إلى الصفحات العامة. http://multiheadweighers.co.uk هو مثال على موقع يستخدم ACL. هناك CMS مميز بالكامل وراء الصفحات العامة.

بالنسبة لموقع بسيط ، سأسمح بالوصول ، على سبيل المثال ، إجراء العرض باستخدام

function beforeFilter() {
    parent::beforeFilter;
    $this->Auth->allow('view');
}

نرى: http://book.cakephp.org/view/1257/allow

إنها في الحقيقة ليست مشكلة كبيرة - جربها وسترى مدى سهولة ذلك.

تعديل:

من الكتاب @ http://book.cakephp.org/view/1550/setting-up permissions

الآن نريد أن نأخذ الإشارات إلى Auth-> المسموح بها في وحدات تحكم المستخدمين والمجموعات. ثم أضف ما يلي إلى محركاتك ووحدات التحكم عن واجهة المستخدم:

function beforeFilter() 
{    
    parent::beforeFilter();     
    $this->Auth->allowedActions = array('index', 'view');
}

هذا يزيل "مفاتيح OFF" التي وضعناها في وقت سابق على وحدات تحكم المستخدمين والمجموعات ، ويمنح الجمهور وصولًا إلى الفهرس وعرض الإجراءات في منشورات وحدات التحكم عن واجهة المستخدم. في appcontroller :: QuaretFilter () أضف ما يلي:

 $this->Auth->allowedActions = array('display');

هذا يجعل العمل "العرض" العام. هذا سيبقي PagesController :: Display () الجمهور. هذا مهم لأن التوجيه الافتراضي لديه هذا الإجراء كصفحة رئيسية لتطبيقك.

تحرير 2:

    $user = ($this->Auth->user())?$this->Auth->user():'Anonymous';
    if(!$this->Acl->check($user,"{$url}"))
        $this->redirect($this->referer()); // or whatever action you want to take.

نصائح أخرى

سيكون الحل هو استخدام طريقة السماح في مكون المصادقة للسماح للمستخدم بزيارة تلك الصفحات.

شكرًا لك!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top