yii2 错误处理程序:重定向到 frontend/site/error

yii2 errorhandler: Redirect to frontend/site/error

在后端实现访问控制时,我想将不允许的用户重定向到前端错误页面(而不是后端错误页面)。

后端控制器:

'access' => [
    'class' => AccessControl::className(),
    'rules' => [
        [
            'allow' => true,
            'roles' => ['admin'],
        ],

backend/config/main.php

'components'=>[
        'errorHandler' => [
            'errorAction' => 'site/error',
        ],

如何将非管理员用户重定向到 frontend/site/error?我尝试的一切都会导致错误。

非常感谢

如果我理解正确,你希望前端用户如果登录并试图访问后端的模块或控制器he/she不应该被允许这样做,这是之前报告的会话共享错误,已添加到 Yii 2.0.9 milestones 中,并且自 2016 年以来已经集成。

如果您正在使用旧版本的现有 Yii2 项目并且尚未迁移或升级到最新版本,我建议您进行以下设置

/backend/config/main.php:

return [
    'id' => 'app-backend',
    // ...
    'components' => [
        'user' => [
            'identityClass' => 'common\models\Admin',
            'enableAutoLogin' => true,
            'identityCookie' => [
                'name' => '_backendUser', // unique for backend
            ]
        ],
        'session' => [
            'name' => 'PHPBACKSESSID',
            'savePath' => sys_get_temp_dir(),
        ],
// ..
];

/frontend/config/main.php:

return [
    'id' => 'app-frontend',
    'components' => [
        'user' => [
            'identityClass' => 'common\models\User',
            'enableAutoLogin' => true,
            'identityCookie' => [
                'name' => '_frontendUser',
            ]
        ],
        'session' => [
            'name' => 'PHPFRONTSESSID',
            'savePath' => sys_get_temp_dir(),
        ],
    ///...
    ]
];