2012-12-18 81 views
2

這是我的問題:我有一個管理區域,我用名稱和密碼登錄保護它。
當我輸入的網址我的意思是像localhost/admin /區域它重定向到本地主機/用戶/管理
問題是,如果我輸入一個錯誤的地址,如本地主機/管理員/ 545
它讓我到管理區並在控制器
這錯誤是我的代碼:cakephp錯誤登錄時,我輸入一個錯誤的網址

的AppController:

function beforeFilter() 
{ 
    $this->Auth->loginAction = array('controller'=>'users','action'=>'login','admin'=>false); 
    $this->Auth->authorize = array('Controller'); 
    if(!isset($this->request->params['prefix'])) 
    { 
     $this->Auth->allow(); 
    } 
    if(isset($this->request->params['prefix']) && $this->request->params['prefix'] == 'admin') 
    {  
     $this->layout = 'admin'; 
    } 
} 

function isAuthorized($user) 
{ 
    if(!isset($this->request->params['prefix'])) 
    { 
     return true; 
    } 
} 

菜單:

<?php 
    $pages = $this->requestAction(array('controller'=>'pages','action'=>'menu','admin'=>false)); ?> 
    <a href="/index"><img class="title" src="/img/title.png" alt="studio"></a> 
    <ul class="menu"> 
    <?php foreach($pages as $k => $v): $v = current($v);?> 

和代碼的其餘部分是:

功能登錄:

function login() 
{ 
    if ($this->request->is('post')) 
    { 
     if ($this->Auth->login()) 
     { 
      return $this->redirect($this->Auth->redirect()); 
     } else { 
      $this->Session->setFlash("Votre login ou votre mot de passe ne correspond pas"); 
     } 
    } 
} 
+0

格式化您的代碼,以便人們可以看到發生了什麼。 – dogmatic69

+0

然後指定你得到的錯誤。 – Alvaro

回答

0

我想你可以在CakePHP中的URL進行感到困惑。這裏我將介紹他們的工作方式。我將假設您已啓用管理路由。

本地主機/管理/地區 這個網址是說帶我去的area控制器admin_index方法。

本地主機/管理/ 545 這個網址是說帶我去了545控制器admin_index方法。

如果控制器不存在,您將獲得一個區域。如果你想獲得一個特定的USER_ID,你可能會尋找:

localhost/admin/user/view/545 

這將試圖路由用戶在user控制器admin_view方法,並通過545 USER_ID。如果用戶沒有查看權限,他們將被重定向到登錄名。