加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

身份验证 – 基于Yii角色的访问,管理自己的帖子

发布时间:2020-12-13 17:12:23 所属栏目:PHP教程 来源:网络整理
导读:我用谷歌搜索,阅读教程,博客和实验很多.所以我能够定义基于角色的控制器动作访问. 一切正常. 我想问的是.如何编写规则来显示,编辑和删除用户自己的帖子? 默认情况下,它显示所有帖子.但是,我们可以将数据提供者标准显示为自己的帖子.但是我怎么能控制CRUD?
我用谷歌搜索,阅读教程,博客和实验很多.所以我能够定义基于角色的控制器动作访问.
一切正常.
我想问的是.如何编写规则来显示,编辑和删除用户自己的帖子?

默认情况下,它显示所有帖子.但是,我们可以将数据提供者标准显示为自己的帖子.但是我怎么能控制CRUD?
请帮助我.我的代码是吼叫.

public function accessRules() {
        return array(
            array('allow',// allow all users to perform 'index' and 'view' actions
                'actions' => array('index','view'),'users' => array('*'),),array('allow',// allow authenticated user to perform 'create' and 'update' actions
                'actions' => array('create','update'),'expression' => 'Yii::app()->controller->HaveAccess()',//'users' => array('@'),// allow admin user to perform 'admin' and 'delete' actions
                'actions' => array('admin','delete'),array('deny',// deny all users
                'users' => array('*'),);
    }

对于帖子显示:

public function actionIndex() {
        $dataProvider = new CActiveDataProvider('Advertisment');
        if (!$this->IsAdmin()) {
            $dataProvider = new CActiveDataProvider('Advertisment',array(
                        'criteria' => array(
                            'condition' => 'added_by='.$this->userId,'order' => 'id DESC','pagination' => array(
                            'pageSize' => 20,));
        }
        $this->render('index',array(
            'dataProvider' => $dataProvider,));
    }

解决方法

要限制对用户自己的帖子的更新和删除操作,您必须检查控制器操作内的权限(这在控制器的accessRules afaik中是不可能的,因为当前不知道检查权限的帖子的ID对accessRules进行评估.)

例:

public function actionUpdate($id){
    $model = $this->loadModel($id);
    if($model->added_by === $this->userId){
        // your code here
    }else
        throw new CHttpException(401,'You are not authorized to edit this post.');
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读