我的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]) ?>
将生成:
而不是:
我该如何解决这个问题?
答案 0 :(得分:0)
这似乎不是路线问题。你不能在你的Auth阵列中指定unauthorizedRedirect
吗?像这样:
$this->loadComponent('Auth', [
//...
'unauthorizedRedirect' => [
'controller'=>'Users',
'action'=>'login',
'prefix'=>'admin'
]
]);
unauthorizedRedirect :控制未经授权的访问。通过 默认的未授权用户被重定向到引荐来源网址或 loginAction或'/'.