登录后重定向到推荐人不起作用

Posted

技术标签:

【中文标题】登录后重定向到推荐人不起作用【英文标题】:Redirect to referrer not working after Login 【发布时间】:2018-08-21 19:13:10 【问题描述】:

用户登录后,我想将他们重定向回他们来自的地方,但它在 Cakephp 3.5 中无法正常工作。以下是帮助我解决此问题所需的信息。

登录时的 URL(会话超时),

http://dev.scys.com/db/admin?redirect=%2Fadmin%2Fstatuses

这是我的身份验证配置,

$this->loadComponent('Auth', [
            'loginAction' => ['controller' => 'Admins', 'action' => 'login'],
            'loginRedirect' => ['controller' => 'Admins', 'action' => 'index'],
            'logoutRedirect' => ['controller' => 'Admins', 'action' => 'login'],
            'unauthorizedRedirect' => $this->referer(),
            'authenticate' => [
                'Form' => [
                    'finder' => 'auth',
                    'userModel' => 'Admins',
                    'fields' => ['username' => 'username', 'password' => 'password']
                ]
            ]

        ]);

在登录方法/动作中

$user = $this->Auth->identify();
            if ($user) 
                $this->Auth->setUser($user);
                return $this->redirect($this->Auth->redirectUrl());
            

更多积分

我也试过 $this->redirect($this->request->getQuery('redirect'));

我是否遗漏了任何我必须添加的东西才能解决这个问题:(

【问题讨论】:

试试Router::url( $this->referer(), true ) 这对我有用 :( 您的意思是现在工作还是不工作?你把它放到$this->redirect(Router::url( $this->referer(), true )了吗? 打错了,不工作,是的,我也是这样做的 用户当前被重定向到哪里?您当前的代码实际发生了什么? 【参考方案1】:

我发现了我的错误, 实际上,我使用的是操作 URL,例如,

$this->Form->create(NULL, ['url'=> ['controller' => 'Admins', 'action' => 'login'],'style'=>'display: block;');

因此,URL 变为“admins/login”并且重定向查询字符串被删除,这就是问题发生的原因,因为“$this->redirect($this->Auth->redirectUrl());”没有找到任何重定向查询字符串(根据案例 1),所以它使用$this->Auth->config('loginRedirect');(根据案例2)。

然后我通过从 表单创建选项参数中删除 URL 键和值来解决它。

【讨论】:

以上是关于登录后重定向到推荐人不起作用的主要内容,如果未能解决你的问题,请参考以下文章

PHP重定向不起作用

如何在登录后重定向到我想要的页面并在成功登录后显示用户名

模式后:“历史”vue 路由器不起作用

反应路由器 v4 重定向不起作用

在 Codeigniter 中检查登录和重定向不起作用?

如何在 gwt 客户端中重定向?