CakePHP 3.x在不同的用户角色上使用redirectUrl()

时间:2016-11-20 17:26:50

标签: php redirect cakephp

我正在使用Auth组件在登录和注销时设置重定向:

$this->loadComponent('Auth', [
            'loginRedirect' => [
                'controller' => 'Adresses',
                'action' => 'index'
            ],
            'logoutRedirect' => [
                'controller' => 'Pages',
                'action' => 'display',
                'home'
            ],
                'authenticate' => [
                    'Form' => [
                        'fields' => ['username' => 'email']
                    ]
                ],
            'authorize' => 'Controller',

        ]);

现在我希望用户根据他们的角色在不同页面上进行重定向,到目前为止效果很好:

if ($this->Auth->user('role') == 'admin') {                           
                            return $this->redirect([
                                'controller' => 'adresses',
                                'action' => 'adminindex'
                            ]);
                        }
                    } elseif ($this->Auth->user('role') == 'user') {
                        return $this->redirect([
                            'controller' => 'adresses',
                            'action' => 'index'
                        ]);
                    }

现在我想将不同的角色重定向到请求的链接。我正在使用:

return $this->redirect($this->Auth->redirectUrl());

仅适用于查看和编辑等请求。否则它将回退到Auth Component重定向,这是我不想要的。

如果请求了视图并且用户/管理员尚未登录,我怎样才能完成我在Auth组件(App Controller)中的常规回退我的角色切换器以及重定向。

为此我试过:

 if(!empty($this->Auth->redirectUrl())){

 }

哪个不起作用。任何想法都会受到赞赏。

1 个答案:

答案 0 :(得分:2)

$this->Auth->redirectUrl()

仅适用于登录后重定向用户

请参阅http://book.cakephp.org/3.0/en/controllers/components/authentication.html#redirecting-users-after-login

如果您需要重定向到referer页面,可以使用Controller::referer()

请参阅http://api.cakephp.org/3.3/class-Cake.Controller.Controller.html#_referer

您可以使用$this->Auth->user()

检查登录的用户