5

मैं केकपीएचपी 1.3 से केकपीएचपी 2.2.2 तक जा रहा हूं और एक सरल व्यवस्थापक क्षेत्र के लिए बेसिक एचटीपी प्रमाणीकरण का उपयोग करना चाहता हूं। मैं इसे काम करने में सक्षम नहीं हूं और मैं सोच रहा हूं कि मुझे दस्तावेज़ में कुछ गलत समझा गया।केकेपीएचपी 2 बेसिक ऑथ प्रमाणीकरण

प्रलेखन से मैं समझ गया मैं की तरह

public $components = array(
    'Auth' => array(
     'authenticate' => array(
     'Basic' 
    ), 
     'authError' => 'You may not access this area.', 
     'authorize' => array('Controller') 
    ) 
); 

मैं समझता हूँ कि आगे मैं BaseAuthenticate घटक का विस्तार करने के लिए मान्य उपयोगकर्ता तिथि वापस जाने के लिए लेकिन फिर भी ऊपर विन्यास मैं उम्मीद करेंगे के साथ की जरूरत है कुछ करने के लिए है कि ब्राउज़र की एक पॉपअप विंडो में एचटीपी एक्सेस संवाद खुल जाएगा। लेकिन ऐसा कुछ भी नहीं होता है, इसके बजाय मुझे/उपयोगकर्ता/लॉगिन पर रीडायरेक्ट किया जाता है जो मौजूद नहीं है। मुझे एचटीपी एक्सेस के लिए लॉगिन दृश्य की आवश्यकता क्यों है? मैं उलझन में हूं।

उत्तर

7

अपने नियंत्रक को Auth घटक जोड़ें (या AppController को)

class ThingsController extends AppController { 
    var $components = array('Auth'); 
} 

CakePHP एक लॉगिन कार्रवाई आवश्यकता है, इसलिए भले ही आप मूल प्रमाणीकरण, जहां HTTP एजेंट के लिए जिम्मेदार है का उपयोग प्रमाणीकरण विवरण एकत्र करने के लिए यूआई, आपको कुछ नियंत्रक में एक क्रिया निर्दिष्ट करने की आवश्यकता है जो लॉगिन को संभालेगा (मूल मामले में, यदि उपयोगकर्ता अभी तक प्रमाणित नहीं है तो यह WWW-Authenticate: Basic शीर्षलेख भेज देगा)।

आप सेट कर सकते AuthCompoment के $loginAction, लेकिन UsersController में login विधि को यह चूक (और परंपराओं को तोड़ने के लिए नहीं की सलाह दी जाती है)। तो, पहले View/Users/login.ctp पर एक खाली टेम्पलेट बनानी होगी, फिर UsersController

class UsersController extends AppController { 

    public $components = array(
     'Session', 
     'Auth' => array(
      'authenticate' => array('Basic') 
     ) 
    ); 

    public function login() { 
     if ($this->Auth->login()) { 
      return $this->redirect($this->Auth->redirect()); 
     } else { 
      $this->Session->setFlash('Not able to login'); 
     } 
    } 

    public function logout() { 
     $this->redirect($this->Auth->logout()); 
    } 

} 
+0

धन्यवाद करने के लिए निम्न जोड़ने के लिए, कि काम किया! –

संबंधित मुद्दे