路由和管理范围不能正常工作
Routing and admin scope not working well
我的 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]) ?>
将生成:
而不是:
我该如何解决这个问题?
这似乎不是路由问题。不能只在 Auth 数组中指定 unauthorizedRedirect
吗?像这样:
$this->loadComponent('Auth', [
//...
'unauthorizedRedirect' => [
'controller'=>'Users',
'action'=>'login',
'prefix'=>'admin'
]
]);
unauthorizedRedirect: Controls handling of unauthorized access. By
default unauthorized user is redirected to the referrer URL or
loginAction or ‘/’.
我的 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]) ?>
将生成:
而不是:
我该如何解决这个问题?
这似乎不是路由问题。不能只在 Auth 数组中指定 unauthorizedRedirect
吗?像这样:
$this->loadComponent('Auth', [
//...
'unauthorizedRedirect' => [
'controller'=>'Users',
'action'=>'login',
'prefix'=>'admin'
]
]);
unauthorizedRedirect: Controls handling of unauthorized access. By default unauthorized user is redirected to the referrer URL or loginAction or ‘/’.