Php 覆盖登录重定向
刚刚开始学习CakePHP框架。我正在使用Auth组件,所有需要用户登录的操作都会重定向到users/login,而不是login/login(我的非标准控制器)。有人知道我可以在哪里更改此设置吗?另外,auth组件如何跨多个控制器工作?我必须在每个控制器中重新定义这个自动重定向吗Php 覆盖登录重定向,php,cakephp,cakephp-2.0,Php,Cakephp,Cakephp 2.0,刚刚开始学习CakePHP框架。我正在使用Auth组件,所有需要用户登录的操作都会重定向到users/login,而不是login/login(我的非标准控制器)。有人知道我可以在哪里更改此设置吗?另外,auth组件如何跨多个控制器工作?我必须在每个控制器中重新定义这个自动重定向吗 <?php class LoginController extends AppController { public $name = 'Login'; public $compone
<?php
class LoginController extends AppController {
public $name = 'Login';
public $components = array('Auth');
public $helpers = array('Html', 'Form' );
function beforeFilter() {
// tell Auth not to check authentication when doing the 'register' action
$this->Auth->allow('register');
$this->Auth->userModel = 'Login';
}
function register() {
if (!empty($this->data)){
if ($this->Login->save($this->params['data'])) {
$this->flash('Your registration information was accepted. Welcome!');
$this->Auth->login($this->data);
$this->redirect(array('action' => 'index'));
} else {
$this->flash('There was a problem with your registration', '/login/knownusers');
}
}
}
function createprofile() {
}
function knownusers() {
$this->set('knownusers', $this->Login->find(
'all',
array(
'fields' => array('id','username', 'password', 'fk_profile_id'),
$this->redirect(array('action' => 'index'));
} else {
$this->flash('There was a problem with your registration', '/login/knownusers');
}
}
}
function createprofile() {
}
function knownusers() {
$this->set('knownusers', $this->Login->find(
'all',
array(
'fields' => array('id','username', 'password', 'fk_profile_id'),
'order' => 'id DESC'
)
));
}
function login() {
}
function logout() {
$this->redirect($this->Auth->logout('login/login'));
}
}
?>
您可以将此语句放入beforeFilter()中
此外,您不需要在每个控制器中定义此项。如果您需要为每个控制器执行任何逻辑,我会将其放在AppController的beforeFilter()中…您可以将此语句放在beforeFilter()中
此外,您不需要在每个控制器中定义此项。如果您需要为每个控制器执行任何逻辑,我会将其放在AppController的beforeFilter()中…如果您的整个网站需要保护,那么您可以在AppController
中定义Auth
组件,这将使这些规则应用于从该对象继承的每个控制器(即,您站点上的所有控制器)
CakePHP概述了完成尝试操作所需的所有参数。您应该能够在设置Auth组件时定义登录重定向:
public $components = array(
'Auth' => array(
'loginAction' => array('controller' => 'User', 'action' => 'login')
)
);
如果需要保护整个网站,则可以在AppController
中定义Auth
组件,这将使这些规则应用于从该对象继承的每个控制器(即站点上的所有控制器)
CakePHP概述了完成尝试操作所需的所有参数。您应该能够在设置Auth组件时定义登录重定向:
public $components = array(
'Auth' => array(
'loginAction' => array('controller' => 'User', 'action' => 'login')
)
);
太好了,谢谢。我必须说,我很惊讶这种定制会出现在应用程序目录之外。对我来说,感觉像是弄乱了核心库。这应该在应用程序目录中完成,无论是在AppController.php文件还是自定义控制器中。这绝对不是对lib目录的更改!太好了,谢谢。我必须说,我很惊讶,这种自定义将位于应用程序目录之外。对我来说,感觉像是弄乱了核心库。这应该在应用程序目录中完成,无论是在AppController.php文件中还是在自定义控制器中。这绝对不是对lib目录的更改!