我试图让我的管理路由与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());
}
}
?>
如果您需要更多信息,请与我们联系。
由于
答案 0 :(得分:0)
别担心,一切正常:)
在AppController :: beforeFilter()中,您声明为了登录,loginAction是Users / login(Users / admin_login if admin =&gt; true)
当您使用admin =&gt; true转到Pages / index并且您尚未登录时,您将被重定向到Users / admin_login,并且如下所示:
但是当我输入/ admin时,它会重定向到/ admin / users / login并显示此错误。
Create UsersController::admin_login() in file: cms.local/controllers/users_controller.php
找不到UsersController :: admin_login()方法,你应该创建它。
答案 1 :(得分: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'=&gt;如果仅使用 admin_login ,则为true。
答案 2 :(得分: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');
}
}