在后台main.php中配置行为报错,在控制器不会出现错误 [ 2.0 版本 ]
min.php配置行为
main.php
'as myBehavior' => [
'class' => 'backend\components\MyBehavior',
'allowActions' => [
'site/error','site/login',
]
],
backend\components\MyBehavior.php
namespace backend\components;
use Yii;
use yii\base\ActionFilter;
class MyBehavior extends ActionFilter
{
public $allowActions = [];
public function beforeAction($action)
{
$currentRequestRoute = $action->getUniqueId();
var_dump(Yii::$app->user->can('/' . $currentRequestRoute));
var_dump('/' . $currentRequestRoute);
if (!Yii::$app->user->can('/' . $currentRequestRoute)) {
throw new \yii\web\ForbiddenHttpException('没有权限,请与管理员联系ss');
}
return true;
}
}
错误页面
bool(false) string(11) "/site/error"
An Error occurred while handling another error:
yii\web\ForbiddenHttpException: 没有权限,请与管理员联系ss in E:\gitClone\yii-adv-rbac\backend\components\MyBehavior.php:22
Stack trace:
#0 E:\gitClone\yii-adv-rbac\vendor\yiisoft\yii2\base\ActionFilter.php(75): backend\components\MyBehavior->beforeAction(Object(yii\web\ErrorAction))
#1 [internal function]: yii\base\ActionFilter->beforeFilter(Object(yii\base\ActionEvent))
#2 E:\gitClone\yii-adv-rbac\vendor\yiisoft\yii2\base\Component.php(557): call_user_func(Array, Object(yii\base\ActionEvent))
#3 E:\gitClone\yii-adv-rbac\vendor\yiisoft\yii2\base\Module.php(682): yii\base\Component->trigger('beforeAction', Object(yii\base\ActionEvent))
#4 E:\gitClone\yii-adv-rbac\vendor\yiisoft\yii2\base\Controller.php(145): yii\base\Module->beforeAction(Object(yii\web\ErrorAction))
#5 E:\gitClone\yii-adv-rbac\vendor\yiisoft\yii2\base\Module.php(528): yii\base\Controller->runAction('error', Array)
#6 E:\gitClone\yii-adv-rbac\vendor\yiisoft\yii2\web\ErrorHandler.php(97): yii\base\Module->runAction('site/error')
#7 E:\gitClone\yii-adv-rbac\vendor\yiisoft\yii2\base\ErrorHandler.php(111): yii\web\ErrorHandler->renderException(Object(yii\web\ForbiddenHttpException))
#8 [internal function]: yii\base\ErrorHandler->handleException(Object(yii\web\ForbiddenHttpException))
#9 {main}
Previous exception:
yii\web\ForbiddenHttpException: 没有权限,请与管理员联系ss in E:\gitClone\yii-adv-rbac\backend\components\MyBehavior.php:22
Stack trace:
#0 E:\gitClone\yii-adv-rbac\vendor\yiisoft\yii2\base\ActionFilter.php(75): backend\components\MyBehavior->beforeAction(Object(yii\base\InlineAction))
#1 [internal function]: yii\base\ActionFilter->beforeFilter(Object(yii\base\ActionEvent))
#2 E:\gitClone\yii-adv-rbac\vendor\yiisoft\yii2\base\Component.php(557): call_user_func(Array, Object(yii\base\ActionEvent))
#3 E:\gitClone\yii-adv-rbac\vendor\yiisoft\yii2\base\Module.php(682): yii\base\Component->trigger('beforeAction', Object(yii\base\ActionEvent))
#4 E:\gitClone\yii-adv-rbac\vendor\yiisoft\yii2\base\Controller.php(145): yii\base\Module->beforeAction(Object(yii\base\InlineAction))
#5 E:\gitClone\yii-adv-rbac\vendor\yiisoft\yii2\base\Module.php(528): yii\base\Controller->runAction('create', Array)
#6 E:\gitClone\yii-adv-rbac\vendor\yiisoft\yii2\web\Application.php(103): yii\base\Module->runAction('blog/create', Array)
#7 E:\gitClone\yii-adv-rbac\vendor\yiisoft\yii2\base\Application.php(386): yii\web\Application->handleRequest(Object(yii\web\Request))
#8 E:\gitClone\yii-adv-rbac\backend\web\index.php(17): yii\base\Application->run()
#9 {main}
控制器中配置行为(出现正确的权限提示页面)
public function behaviors()
{
return [
//附加行为
'myBehavior' => \backend\components\MyBehavior::className(),
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'delete' => ['POST','GET'],
],
],
];
}
正确提示页面
wayneluo 补充于 2018-04-24 10:33
在配置文件里是全局的行为,当第一次访问blog/ndex页面没有权限,抛出错误然后访问site/error,,site/error又走一遍行为,但是没有去过滤site/error所以报错了
共 0 个回答
没有找到数据。
wayneluo
注册时间:2017-11-22
最后登录:2018-04-24
在线时长:10小时44分
最后登录:2018-04-24
在线时长:10小时44分
- 粉丝0
- 金钱15
- 威望0
- 积分115