我在CakePHP 4中为我的web应用程序做了一个前缀Admin部分。在config/routes.php中,我将Auth插件限定为这样的范围(因此只有/admin/*需要login:
)$routes->prefix('Admin', function (RouteBuilder $routes) {
$routes->registerMiddleware(
'auth',
new AuthenticationMiddlewareAuthenticationMiddleware($this)
);
$routes->applyMiddleware('auth');
// etc.
因为我想有一个简单的登陆页(例如,localhost/admin)的面板,我创建了一个AdminController.php在/admin/文件夹,我试图连接'/admin'
到这个控制器,使URL不会是一个笨拙的localhost/admin/admin
-但我得到一个Auth错误。
$routes->connect(
'/admin',
['prefix' => 'Admin', 'controller' => 'Admin', 'action' => 'index']
);
会产生如下错误:请求对象不包含所需的身份验证属性
我试图通过重新定义中间件的作用域来改善这种情况
$routes->scope('/admin', function(RouteBuilder $routes)
{
$routes->registerMiddleware(
'auth',
new AuthenticationMiddlewareAuthenticationMiddleware($this)
);
$routes->applyMiddleware('auth');
});
但这不起作用,它给出相同的错误。
不要在前缀之外创建额外的路由,您可以使用/
作为连接路由到当前前缀/作用域路径的路径:
$routes->prefix('Admin', function (RouteBuilder $routes) {
$routes->registerMiddleware(
'auth',
new AuthenticationMiddlewareAuthenticationMiddleware($this)
);
$routes->applyMiddleware('auth');
// this will connect `/admin`
$routes->connect('/', ['controller' => 'Admin', 'action' => 'index']);
// ...
}
参见
- 食谱比;路由比;前缀路由
- 食谱比;路由比;快速浏览