cakePHP 3.0 - 当 "in" 管理员控制器+动作时会话超时...无法重定向到非管理员控制器+动作

cakePHP 3.0 - When session times out while "in" an admin controller+action... Cannot redirect to non-admin controller+action

假设我在 admin\controller\action...

当会话超时并且用户对任何 controller/action 的下一个请求被放置时,我最终进入 admin\users\login() 函数。根据 Auth 组件设置,这正是应该发生的事情!

但是,然后重定向到 ['admin' => false,'controller' => 'users','action' => 'login'] 立即返回到 "admin\users\login"

代码:

$this->redirect(['admin' => false, 'controller' => 'users', 'action' => 'login'])

此时不支持 admin=false。

实际上,查看我在 AppController 中的 'Auth' 组件初始化:

  // Authentication
  $this->loadComponent('Auth', [
    'authorize' => array('Controller'),
    'loginAction' => array('admin' => false, 'plugin' => NULL, 'controller' => 'users', 'action' => 'login'),
    'loginRedirect' => array('admin' => false, 'plugin' => NULL, 'controller' => 'pages', 'action' => '/'),
    'logoutRedirect' => array('admin' => false, 'plugin' => NULL, 'controller' => 'users', 'action' => 'login'),
    'authError' => 'Authorization is Required!',
    'authenticate' => [
        'Form' => ['fields' => ['username' => 'name', 'password' => '
                    'passwordHasher' => 'Default'
        ]
    ]
  ]);

在我看来,admin => false 似乎被忽略了。我确定当延迟(去喝咖啡)一些 controller/action 的新请求发生时,该请求将被发送到 admin\users\login,因为最后一个是管理员......但为什么不应该' admin\users\login 中的实际重定向或此处显示的 Auth->loginRedirect 是否仍然强制执行管理路由?

3.0 中有什么新东西吗,还是我只是遗漏了什么?

无论文档如何,'admin' => false 不会删除在会话超时后最后一个请求是管理路由时在 Auth 组件中执行的管理路由。

我发现问题 #14904579(日期为 2013 年)通过更改 'loginAction' => '/users/login'... 省略数组语法解决了这个问题。

我不知道这个问题是否在 2013 年存在过一次,并且在 cakphp 3.0.9 版本中再次出现。我在 运行 2.6.7

时没有遇到这个问题

这是从路由(包括管理员)中删除任何前缀的正确方法:

$this->redirect(['prefix' => false, 'controller' => 'users', 'action' => 'login'])
$this->loadComponent('Auth', [
    'loginAction' => [
        'prefix' => false, //just add this if you wish to use the array format for urls
        'controller' => 'Users',
        'action' => 'login',
    ],
    'authError' => 'Login to continue.',
    'storage' => 'Session'
]);

According to the Docs, but no prefix in the LoginAction key in example code