CakePHP - 无法直接访问UsersController :: admin_login()

时间:2014-07-24 17:48:25

标签: php cakephp authentication login

基于CakePHP,我的REST API中的admin_login方法存在问题。

前端是REST api 后端是经典的CakePHP管理部分(基于管理员前缀)

我试着解释一下我是如何为app的管理部分创建登录功能的。

我在routes.php中添加了路由

Router::connect('/admin', array('controller' => 'users', 'action' => 'admin_login'));
Router::connect('/admin/logout', array('controller' => 'users', 'action' => 'admin_logout'));

在appController中添加了auth模块

'Auth' => array(
            'loginRedirect' => array('controller' => 'users', 'action' => 'admin_login'),
            'logoutRedirect' => array('controller' => 'users', 'action' => 'admin_logout'),
            'authError' => 'You must be logged in to view this page.',
            'loginError' => 'Invalid Username or Password entered, please try again.'
        ));

并进入beforeFiler回调允许方法

public function beforeFilter() {
        parent::beforeFilter();
        // TODO THIS SHOULD BE DEFINED ON EACH CONTROLLER SEPARATED
        $this->Auth->allow('view', 'index','add','admin_login');

在用户控制器中,我添加了admin_login方法

public function admin_login() {
        die('test');
    }

还有admin_login.ctp模板文件。

但如果我试图获取网址:

http://project.loc/admin/

我总是收到此错误消息>

Private Method in UsersController
Error: UsersController::admin_login() cannot be accessed directly.

问题是>

我如何解决它以及我做错了什么?

1 个答案:

答案 0 :(得分:6)

您用于管理员前缀操作的网址数组不正确。例如。而不是array('controller' => 'users', 'action' => 'admin_login'),您需要使用array('controller' => 'users', 'action' => 'login', 'admin' => true)