CakePHP 4,使用Auth Plugin和作用域对管理面板进行身份验证



我在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']);
// ...
}

参见

  • 食谱比;路由比;前缀路由
  • 食谱比;路由比;快速浏览

相关内容

  • 没有找到相关文章