2009-12-18 12 views
7

मैं केकेपीएचपी के ऑथ घटक का उपयोग कर रहा हूं और यह मेरे app_controller.php में है।केकपीएचपी में पेज नियंत्रक से ऑथ को कैसे हटाएं?

अब मैं पेज नियंत्रक से विशिष्ट दृश्यों को अनुमति देना चाहता हूं। मैं उसको कैसे करू?

उत्तर

13

अपने ऐप/नियंत्रकों/डीआईआर में केक/libs/नियंत्रकों में पृष्ठों_controller.php फ़ाइल की प्रतिलिपि बनाएँ। फिर आप इसे अपनी इच्छानुसार कुछ भी करने के लिए संशोधित कर सकते हैं। प्रमाणन घटक के साथ, विशिष्ट तरीका अनुमति देने के लिए विशिष्ट पहुँच इस तरह है:

class PagesController extends AppController { 
... 
function beforeFilter() { 
    $this->Auth->allow('action1', 'allowedAction2'); 
} 
... 

मैं अत्यधिक फ़ाइल अपने नियंत्रकों dir, बल्कि जगह में इसे संपादित की तुलना में, कॉपी करने की सलाह देते हैं, क्योंकि यह केक का उन्नयन करना होगा बहुत आसान, और कम संभावना है कि आप गलती से कुछ सामान ओवरराइट करें।

+3

$ यह-> ऑथ-> अनुमति दें ('*'); ठीक काम करेगा। – Wayne

+0

सच है, हालांकि यह पेज नियंत्रक में सभी कार्यों की अनुमति देगा। मुझे लगता है कि ओपी ने कहा कि वह सभी को एक्सेस करने की अनुमति देना चाहता था, लेकिन केवल पीसी में विशिष्ट विचारों पर। –

+0

@Wayne वास्तव में? यह बिना किसी कवर के हवाई जहाज में उड़ान जैसा है। –

11

आप अपने ऐप_कंट्रोलर में निम्नलिखित जोड़ सकते हैं।

function beforeFilter() { 
    if ($this->params['controller'] == 'pages') { 
    $this->Auth->allow('*'); // or ('page1', 'page2', ..., 'pageN') 
    } 
} 

तब आपको पृष्ठों नियंत्रक की प्रतिलिपि बनाने की आवश्यकता नहीं है।

5

मैंने अन्य तरीकों की कोशिश नहीं की है, लेकिन यह उन सभी स्थिर पृष्ठों तक पहुंच की इजाजत देने का भी सही तरीका है क्योंकि प्रदर्शन सामान्य कार्य है। ऐप_कंट्रोलर में:

//for all actions  
$this->Auth->allow(array('controller' => 'pages', 'action' => 'display')); 

//for particular actions 
$this->Auth->allow(array('controller' => 'pages', 'action' => 'display', 'home')); 
$this->Auth->allow(array('controller' => 'pages', 'action' => 'display', 'aboutus')); 
संबंधित मुद्दे