繁体   English   中英

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

[英]CakePHP 3.x using redirectUrl() on diffrent User Roles

我正在使用身份验证组件在登录和注销时设置重定向:

$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 redirect,我不想要。

当请求视图且尚未登录用户/管理员时,我如何才能完成在身份验证组件(应用控制器)的角色切换器和重定向中进行常规回退的操作。

为此,我尝试:

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

 }

哪个行不通,任何想法都将不胜感激。

$this->Auth->redirectUrl()

仅用于登录后重定向用户

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

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

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

您可以使用$this->Auth->user()检查登录的用户

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM