Cakephp Auth Redirect

时间:2014-05-15 16:47:41

标签: php cakephp redirect

我刚开始尝试学习cakephp auth,我只是复制并粘贴了代码,试图理解它。我无法弄清楚直接重定向是什么

// app控制器 //是空的我知道在某些情况下你把它放在这里,我只是在用户控制器中测试它

//用户控制器

public $components = array('Paginator',
 'Session', 
 'Auth' => array(
        'loginAction' => array(
            'controller' => 'users',
            'action' => 'login',
            'plugin' => 'users'
        ),
        'authError' => 'Did you really think you are allowed to see that?',
        'authenticate' => array(
            'Form' => array(
                'fields' => array('username' => 'email')
            )
        )
    )

);


 public function beforeFilter() {
       $this->Auth->allow('index', 'view');
}

public function login() {
    if ($this->request->is('post')) {
        if ($this->Auth->login()) {
            return $this->redirect($this->Auth->redirectUrl());
            // Prior to 2.3 use
            // `return $this->redirect($this->Auth->redirect());`
        } else {
            $this->Session->setFlash(
                __('Username or password is incorrect'),
                'default',
                array(),
                'auth'
            );
        }
    }
}

我理解前过滤器有意义,它只允许索引和视图,我有另一个名为admin的控制器,如果你没有登录,它会重定向到登录页面

但是对于somme的原因,它会一直重定向到用户/用户/登录,我希望它转到用户/登录?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

你必须把控制器放在你去的地方和行动

  public function login() {  
            if ($this->request->is('post')) {
                if ($this->Auth->login()) { 
                  return $this->redirect(array('controller' => 'users', 'action' => 'login'));
                }
            } else {
                    $this->Session->setFlash(__('Invalido nombre de usuario o contraseña'));
            }
     }