CakePHP4.xCMS教程认证重定向问题

62lalag4  于 2021-09-29  发布在  Java
关注(0)|答案(2)|浏览(355)

我只是不折不扣地重新创建了cms教程。当我没有登录并试图编辑一篇文章时,我会被重定向到登录页面。在这里成功。登录后,我被重定向到错误页面。为什么?返回到文章的重定向出错。见下文
将其重定向到的链接:http://localhost/test_cms/test_cms/articles/edit/first-post
它应该重定向到的链接http://localhost/test_cms/articles/edit/first-post
我根据cms教程处理了每个文件,但似乎不知道这里出了什么问题。
登录代码如下:

public function login()
{
    $this->Authorization->skipAuthorization();

    $this->request->allowMethod(['get', 'post']);
    $result = $this->Authentication->getResult();
    // regardless of POST or GET, redirect if user is logged in
    if ($result->isValid()) {
        // redirect to /articles after login success
        $redirect = $this->request->getQuery('redirect', [
            'controller' => 'Articles',
            'action' => 'index',
        ]);
        return $this->redirect($redirect);
    }
    // display error if user submitted and authentication failed
    if ($this->request->is('post') && !$result->isValid()) {
        $this->Flash->error(__('Invalid username or password'));
    }
}

错误屏幕截图:https://ibb.co/pjx8435

1rhkuytd

1rhkuytd1#

我也有这个问题,并找到了解决办法。在我的userscontroller登录方法中,在 return $this->redirect($redirect); ,我添加了此代码以删除额外的应用程序名称:

if (!is_array($redirect)) {
   if (strncmp($redirect, '/myapp', 6) === 0) {
     $redirect = substr($redirect, 6);
   }
  }

同样,这是一个解决办法。

r1wp621o

r1wp621o2#

看来你已经加价了 test_cms 在您的代码或url中,未经授权的操作可能会附加额外的 test_cms 在你的 redirect 查询参数。您可以通过打印来调试它 $redirect 内部变量 if 条件
此外,您可能需要添加一些屏幕截图、错误消息、堆栈跟踪以及您的问题,这可以帮助人们理解问题,以获得更准确的答案。

相关问题