我正在尝试让我的管理路由与auth组件一起工作。我希望下面的路由正常工作。
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());
}
}
?>如果您需要更多信息,请让我知道。
谢谢
发布于 2011-01-20 18:57:23
别担心,一切正常:)
在AppController::beforeFilter()中,您声明为了登录,登录是Users/ loginAction (如果是admin=>true,则为Users/admin_login)
当您使用admin=>true转到页面/索引时,如果您没有登录,则会被重定向到Users/admin_login,如下所示:
登录,但当我键入/admin时,它会重定向到/admin/users/
并显示此错误。
Create UsersController::admin_login() in file: cms.local/controllers/users_controller.php
找不到方法UsersController::admin_login(),您应该创建它。
发布于 2011-11-24 01:46:16
您可以通过在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‘=> true,以便只使用admin_login。
发布于 2012-08-04 14:05:36
这对我来说很好:
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');
}
}https://stackoverflow.com/questions/4743310
复制相似问题