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

red*_*rom 1 php authentication cakephp login

基于CakePHP的REST API中的admin_login方法存在问题.

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

我尝试解释我是如何尝试为应用程序的管理员部分创建登录功能.

我在routes.php中添加了路由

Router::connect('/admin', array('controller' => 'users', 'action' => 'admin_login'));
Router::connect('/admin/logout', array('controller' => 'users', 'action' => 'admin_logout'));
Run Code Online (Sandbox Code Playgroud)

在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.'
        ));
Run Code Online (Sandbox Code Playgroud)

并进入beforeFiler回调允许的方法

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

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

public function admin_login() {
        die('test');
    }
Run Code Online (Sandbox Code Playgroud)

还有admin_login.ctp模板文件.

但如果我试图获取URL:

HTTP://project.loc/admin/

我总是得到这个错误消息>

Private Method in UsersController
Error: UsersController::admin_login() cannot be accessed directly.
Run Code Online (Sandbox Code Playgroud)

问题是>

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

ADm*_*mad 6

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