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(),
],
///...
]
];
在后端实现访问控制时,我想将不允许的用户重定向到前端错误页面(而不是后端错误页面)。
后端控制器:
'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(),
],
///...
]
];