Cakephp 验证组件问题
我正在尝试让我的管理员路由与身份验证组件一起工作。我希望下面的路由工作Cakephp 验证组件问题,cakephp,cakephp-1.3,Cakephp,Cakephp 1.3,我正在尝试让我的管理员路由与身份验证组件一起工作。我希望下面的路由工作 Router::connect('/admin', array('controller' => 'pages', 'action' => 'index', 'admin' => true)); 但当我输入/admin时,它会重定向到/admin/users/login并显示此错误 Create UsersController::admin_login() in file: cms.local/contro
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
这是我的应用程序控制器代码
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');
}
}
用户/控制器
<?php
class UsersController extends AppController {
var $name = 'Users';
function login(){
}
function admin_logout(){
$this->Session->destroy();
$this->redirect($this->Auth->logout());
}
}
?>
如果你需要更多信息,请告诉我
谢谢别担心,一切正常:)
在AppController::beforeFilter()中,您声明为了登录,登录操作是Users/login(Users/admin\u login,如果admin=>true)
当您使用admin=>true进入页面/索引且未登录时,您将被重定向到Users/admin\u login,这说明:
但当我输入/admin时,它会重定向到/admin/users/login并显示此错误
Create UsersController::admin_login() in file: cms.local/controllers/users_controller.php
在文件cms.local/controllers/users\u controller.php中创建UsersController::admin\u login()
找不到UsersController::admin\u login()方法,您应该创建它。您可以通过在登录操作中指定'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\u登录 这对我很有效:-
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');
}
}
为什么我需要两个登录功能?登录和管理员登录。我添加了admin_登录,但它要求查看。身份验证组件不喜欢管理员路由吗?都是因为cake约定。如果您需要前缀admin
才能工作,那么您确实需要login
和admin\u login
都在那里。还应该创建相应的视图,因为用户和管理员看到不同的登录是合乎逻辑的,对吗?