Yii2权限管理,我写在了beforeAction里,但输出json时就出错了 [ 2.0 版本 ]
我写了个CommonController,其他Controller都继承这个类。
我在CommonController里写了输出JSON的方法
public function renderJson($params = array()) {
Yii::$app->response->format = Response::FORMAT_JSON;
return $params;
}
在CommonController的beforeAction写了验证
$isAjax = Yii::$app->request->getIsAjax();
//未登录
if (\Yii::$app->user->isGuest) {
if ($isAjax) {
return $this->renderJson(array(
'status' => -1,
'message' => '请先登录',
'url' => Yii::$app->getHomeUrl()
));
} else {
return $this->goHome();
}
}else{
return parent::beforeAction($action);
}
这样,如果不是ajax请求就没问题,会跳到登录 ,但是如果是ajax请求。就会出错
PHP Notice 'yii\base\ErrorException' with message 'Trying to get property of non-object'
求解答
最佳答案
-
chocoboxxf 发布于 2015-05-25 23:19 举报
beforeAction返回的应该是true或者false,要直接输出的话,应该还是返回false,通过response指定输出的内容,类似这样
Yii::$app->response->format = Response::FORMAT_JSON; Yii::$app->response->data = array( 'status' => -1, 'message' => '请先登录', 'url' => \Yii::$app->getHomeUrl() ); return false;
共 1 条回复性感的农民 觉得很赞
其他 1 个回答
den1986
注册时间:2015-05-10
最后登录:2017-08-04
在线时长:4小时12分
最后登录:2017-08-04
在线时长:4小时12分
- 粉丝8
- 金钱75
- 威望15
- 积分265