2

我已经搜索过,尽管人们在本网站和其他地方提出了类似的问题,如果不是完全相同的问题,其中一些问题没有得到解答,其余的根本不适用于我(不同的错误,旧蛋糕版本等)。

我在 core.php 中设置了两个路由前缀。这些是“管理员”和“中等”。我希望所有用户都通过登录/users/login并随后被重定向到/account.

当我转到需要身份验证的标准(无前缀)页面时,例如/account,然后我被重定向到/admin/users/login(我不想要前缀)。

登录后,我成功重定向到/account. (至少那部分是有效的)

这是我的 AppController 代码

public $components = array('Session',
   'Auth' => array(
        'loginAction' => array('prefix' => false, 'admin' => false, 'moderate' => false, 'controller' => 'users', 'action' => 'login'),
        'loginRedirect' => array('prefix' => false, 'admin' => false, 'moderate' => false, 'controller' => 'account', 'action' => 'index'),
        'logoutRedirect' => array('controller' => 'index', 'prefix' => false, 'admin' => false, 'moderate' => false),
        'authError' => "You can't access that page",
        'authorize' => array('Controller')
    )
); // components

我还尝试将所有 ' false ' 更改为 ' null '。没有骰子。我正在使用 CakePHP 2.2.4

编辑为 2/11/14 因为人们仍在回答我只是想指出这个问题已经解决。我从来没有弄清楚确切的问题是什么,所以我从来没有发布过官方/接受的答案。我怀疑这是我的路由问题。我上面提供的 AppController 代码是正确的。

4

3 回答 3

2

尝试使用这个:

$this->Auth->loginAction = '/users/login';

希望有帮助!

于 2013-09-02T10:01:22.137 回答
0

将以下代码放入 AppController. 希望对您有所帮助。

public function beforeFilter() {
    $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login','admin' => false, 'prefix' => false, 'moderate' => false);
    $this->Auth->logoutRedirect = array('controller' => 'users', 'action' => 'login','admin' => false, 'prefix' => false, 'moderate' => false);
    $this->Auth->loginRedirect = array('controller' => 'users', 'action' => 'home','admin' => false, 'prefix' => false, 'moderate' => false);
    }
于 2014-02-11T10:40:17.017 回答
0

CakePHP 3 答案

在你的APP/src/Controller/AppController.php

$this->loadComponent('Auth', [
    'loginAction' => [
        'prefix' => false, // tells the app not to use any prefix
        'controller' => 'Users', // change to your preference
        'action' => 'login', // change to your preference
    ],
    // loginRedirect, logoutRedirect etc.
    // …
]);

这比将单个前缀列入黑名单更加灵活和面向未来,因为您可能不知道这些前缀可能是什么,也可能不是。

确认这适用于我的 CakePHP。通过删除测试'prefix' => false,它使应用程序重定向到前缀登录页面,例如/admin/users/login,恢复该行将其修复。

官方文档

于 2019-01-16T08:34:35.963 回答