Php 覆盖登录重定向

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

刚刚开始学习CakePHP框架。我正在使用Auth组件,所有需要用户登录的操作都会重定向到users/login,而不是login/login(我的非标准控制器)。有人知道我可以在哪里更改此设置吗?另外,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'));
    }

 }
 ?>

您可以将此语句放入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目录的更改!