如何在CakePHP中设置authError重定向操作?

时间:2012-08-30 21:29:20

标签: php redirect action cakephp-2.2

这是一种在authError上自定义CakePHP网址的方法吗?如果我查看我Auth中放置的AppController组件,我有一个重定向操作loginRedirectlogoutRedirect,但我不知道是否可以设置像authErrorRedirect

这样的东西
<?php
class AppController extends Controller {

    public $components = array(
        'Session',
        'Auth' => array(
            'loginRedirect' => array('controller' => 'users', 'action' => 'index'),
            'logoutRedirect' => array('controller' => 'users', 'action' => 'index'),
            'authError' => 'You don\'t have the right to go there.',
            // something like this
            'authErrorRedirect' => array('controller' => 'users', 'action' => 'login'),
            'authorize' => array(
                'Controller',
                'Actions' => array(
                    'actionPath' => 'controllers'
                )
            ),
            'authenticate' => array(
                'Form' => array(
                    'fields' => array('username' => 'email')
                )
            )
        ),
        'Acl'
    );

我可以设置authError重定向操作吗?

1 个答案:

答案 0 :(得分:0)

没有。如果您遵循简单身份验证和授权应用程序示例@ CakePHP Cookbook v2.x documentation,您应该重定向登录失败的登录操作“无效的用户名或密码...”。只有在您想要重定向其他操作时才有意义,在以下示例中为login2

public function login() {
    if ($this->request->is('post')) {
        if ($this->Auth->login()) {
            $this->redirect($this->Auth->redirect());
        } else {
            $this->Session->setFlash(__('Invalid username or password, try again'));
            $this->redirect(array('controller' => 'users', 'action' => 'login2'));
        }
    }
}