2011-01-20 56 views
0

我试图让我的管理路由与验证组件一起工作。我想要以下路由工作。验证组件问题

Router::connect('/admin', array('controller' => 'pages', 'action' => 'index', 'admin' => true)); 

但是当我输入/ admin时,它重定向到/ admin/users/login并显示此错误。

Create UsersController::admin_login() in file: cms.local/controllers/users_controller.php 

这是我的app_controller代码。

class AppController extends Controller { 

    var $components = array('DebugKit.Toolbar','Auth','Session'); 

    function beforeFilter(){ 

     //Set up Auth Component 
     $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login'); 
     $this->Auth->loginRedirect = array('controller' => 'pages', 'action' => 'admin_index'); 
     $this->Auth->allow('display'); 

    } 

} 

users_controller

<?php 
class UsersController extends AppController { 

    var $name = 'Users'; 

    function login(){ 

    } 

    function admin_logout(){ 
     $this->Session->destroy(); 
     $this->redirect($this->Auth->logout()); 
    } 

} 
?> 

如果您需要更多的信息,让我知道。

感谢

回答

0

别担心,所有的工作确定:)

在AppController中:: beforeFilter()你说,为了登录,根据loginAction是用户/登录(用户/ admin_login如果管理员= >真)

当你去与管理=>真实页/指数,您还没有登录,您将被重定向到用户/ admin_login,并作为这告诉:

但是当我键入在/管理它重新指向/ admin/users/login并显示此错误。

Create UsersController::admin_login() in file: cms.local/controllers/users_controller.php

的方法UsersController :: admin_login()找不到,你应该创建它。

+0

为什么需要两个登录的功能呢?登录和admin_login。我添加了admin_login,但后来它要求查看它。 auth组件不像管理路由吗? – madphp 2011-01-20 18:39:49

0

您可以通过在loginAction中指定'admin' => false来强制Auth使用非前缀登录操作。这样,所有需要进行身份验证的操作都将使用非前缀登录操作。因此,您的beforeFilter会是这个样子:

function beforeFilter(){ 

    //Set up Auth Component 
    $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login', 'admin' => false); 
    $this->Auth->loginRedirect = array('controller' => 'pages', 'action' => 'admin_index'); 
    $this->Auth->allow('display'); 

} 

同样,你可以走另一条路,并指定“管理员” =>真的只用admin_login

0

这个工作对我罚款: -

function beforeFilter() { 
    if (isset($this - > params['admin'])) { 
     $loggedAdminId = $this - > Session - > read("adminid"); 
     if (!$loggedAdminId && $this - > params['action'] != "admin_login") { 
      $this - > redirect("/admin/admins/login"); 
      $this - > Session - > setFlash('The URL you followed requires you login.'); 
     } else { 
      $this - > Auth - > allow('*'); 
     } 
    } else { 
     $this - > Auth - > loginAction = array('controller' = > 'users', 'action' = > 'login', 'admin' = > false); 
     $this - > Auth - > loginRedirect = array('controller' = > 'users', 'action' = > 'admin_index'); 
    } 
}