基于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模板文件。
但如果我试图获取网址:
我总是收到此错误消息>
Private Method in UsersController
Error: UsersController::admin_login() cannot be accessed directly.
问题是>
我如何解决它以及我做错了什么?
答案 0 :(得分:6)
您用于管理员前缀操作的网址数组不正确。例如。而不是array('controller' => 'users', 'action' => 'admin_login')
,您需要使用array('controller' => 'users', 'action' => 'login', 'admin' => true)
。