CakePHP 4,使用Auth插件和作用域验证管理面板

lxkprmvk  于 2022-11-11  发布在  PHP
关注(0)|答案(1)|浏览(125)

我在CakePHP 4中为我的Web应用程序创建了一个前缀Admin部分。在config/routes.php中,我将Auth插件的范围设置为这样(因此只有/admin/* 需要登录:

$routes->prefix('Admin', function (RouteBuilder $routes) {

$routes->registerMiddleware(
    'auth',
    new \Authentication\Middleware\AuthenticationMiddleware($this)
);
$routes->applyMiddleware('auth');
// etc.

因为我想为面板创建一个简单的登录页面(例如localhost/admin),所以我在/Admin/文件夹中创建了一个AdminController.php,并且我尝试将'/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 \Authentication\Middleware\AuthenticationMiddleware($this)
    );
    $routes->applyMiddleware('auth');
});

但这不起作用,它给出了相同的错误。

new9mtju

new9mtju1#

不要在前缀之外创建额外的路由,您可以使用/作为路径,将路由连接到当前前缀/作用域路径:

$routes->prefix('Admin', function (RouteBuilder $routes) {
    $routes->registerMiddleware(
        'auth',
        new \Authentication\Middleware\AuthenticationMiddleware($this)
    );
    $routes->applyMiddleware('auth');

    // this will connect `/admin`
    $routes->connect('/', ['controller' => 'Admin', 'action' => 'index']);

    // ...
}

另请参阅

*操作手册〉路由〉前缀路由
*手册〉路线〉快速游览

相关问题