路由和管理范围无法正常运行

时间:2017-10-26 17:36:18

标签: php cakephp cakephp-3.0

我的routes.php文件中包含此代码:

Router::scope('/admin', function (RouteBuilder $routes) {
    $routes->connect('/', ['controller' => 'Users', 'action' => 'dashboard']);
    $routes->connect('/login', ['controller' => 'Users', 'action' => 'login']);
    $routes->connect('/logout', ['controller' => 'Users', 'action' => 'logout']);
});

Router::scope('/', function (RouteBuilder $routes) {
    $routes->connect('/', ['controller' => 'Pages', 'action' => 'display', 'home']);

    $routes->connect('/pages/*', ['controller' => 'Pages', 'action' => 'display']);

    $routes->fallbacks(DashedRoute::class);
});

当我使用未经身份验证的用户访问http://localhost/admin时,我希望重定向到http://localhost/admin/login。此刻,我被重定向到http://localhost/login

如果我更改代码,在管理范围添加行$routes->fallbacks(DashedRoute::class);,登录的重定向将很有效,但我的所有链接都将使用admin前缀生成,如:

<?= $this->Html->link($category->name, ['controller' => 'categories', 'action' => 'view', $category->id]) ?>

将生成:

  

http://localhost/admin/categories/view/13

而不是:

  

http://localhost/categories/view/13

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

这似乎不是路线问题。你不能在你的Auth阵列中指定unauthorizedRedirect吗?像这样:

$this->loadComponent('Auth', [
    //...
    'unauthorizedRedirect' => [
        'controller'=>'Users',
        'action'=>'login',
        'prefix'=>'admin'
    ]
]);

更多信息here in the CakePHP book

  

unauthorizedRedirect :控制未经授权的访问。通过   默认的未授权用户被重定向到引荐来源网址或   loginAction或'/'.