刚开始学习CakePHP框架。我正在使用Auth组件,我需要用户登录的所有操作都会重定向到用户/登录,而不是登录/登录(我的非标准控制器)。有谁知道我可以在哪里更改此设置?此外,auth组件如何跨多个控制器工作?我是否必须在每个控制器中重新定义此自动重定向?
<?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'));
}
}
?>
答案 0 :(得分:2)
如果您的整个网站需要受到保护,那么您可以在Auth
中定义AppController
组件,这将导致这些规则应用于从该对象继承的每个控制器(即所有控制器都在你的网站。)
CakePHP Authentication Documentation概述了完成您要完成的任务所需的所有参数。您应该能够在设置Auth组件时定义登录重定向:
public $components = array(
'Auth' => array(
'loginAction' => array('controller' => 'User', 'action' => 'login')
)
);
答案 1 :(得分:1)
您可以将此声明放在beforeFilter()
中$this->Auth->loginAction = array('admin' => false, 'controller' => 'login', 'action' => 'login');
此外,您无需在每个控制器中定义此项。如果你需要为每个控制器执行任何逻辑,我会把它放在AppController的beforeFilter()中......