登录后如何重定向到Routing.prefixes页面?

时间:2011-04-28 15:18:28

标签: cakephp

我正在使用Users plugin来处理用户。 当用户想要访问需要登录的普通页面时,他们会被重定向到登录页面,并在成功登录后重定向到页面。这一切都很好,也很期待。

我的问题是重定向到Routing.prefixes后面的页面,用户被发送到登录页面,但成功登录后被重定向到默认重定向页面($ this-> Auth-> loginRedirect)。

如何让Cake重定向到Routing.prefix背后的用户请求的页面? 我想这是我缺少的配置,或者?

在config.php中我有 Configure::write('Routing.prefixes', array('admin'));

2 个答案:

答案 0 :(得分:0)

您只需要覆盖Cake的“自动”登录过程。

在app_controller.php的beforeFilter()中:

$this->Auth->autoRedirect = false;

创建app_users_controller并覆盖login()函数:

App::import('Controller', 'Users.Users');
AppUsersController extends UsersController {

    function login() {
        if(isset($this->data)) {
            if($this->Auth->login($this->data)) {
                $this->redirect(...)
            }
        }   
    }
}

答案 1 :(得分:0)

我找到了解决方案。

在AppController :: beforeFilter中修复它:

// make sure only admin can access admin area
if (isset($this->params['admin']) && $this->params['admin']) {
    if ($this->Auth->user() && !$this->Auth->user('is_admin')) {
        $this->redirect('/login');
    }
}

// make sure only admin can access admin area if (isset($this->params['admin']) && $this->params['admin']) { if ($this->Auth->user() && !$this->Auth->user('is_admin')) { $this->redirect('/login'); } }