码迷,mamicode.com
首页 > 其他好文 > 详细

yii2-basic后台管理功能开发之五:用户权限的控制

时间:2016-09-29 17:22:00      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:

需求:后台有两种权限+管理员+用户

区别:可以访问的页面不同

解决方法:用户表添加role字段,使用到的是yii2 存取控制过滤器(ACF)方法.

>1在web.php中配置授权的类,有两种,我用到的是PhpManager

components => [
    authManager => [
            class => yii\rbac\PhpManager,
        ],

    ],

>2在用户表中配置角色权限对应的role值,也可以不配置

 const ROLE_ADMIN = 0;
 const ROLE_USER = 1;

>3重写授权规则类AccessRule

class AccessRule extends \yii\filters\AccessRule
{
    /**
     * @inheritdoc
     */
    protected function matchRole($user)
    {
        if (count($this->roles) === 0) {
            return true;
        }
        foreach ($this->roles as $role) {
            if ($role === ?) {
                if ($user->getIsGuest()) {
                    return true;
                }
            }elseif (!$user->getIsGuest() && $role == $user->identity->role) {
                return true;
            }
        }
        return false;
    }

}

>4在控制器中配置相应的权限.

注意其中的ruleConfig是我们刚才改写的类,如果需要控指定的action,则在rules对[action]进行配置.

 public function behaviors()
    {
        return [
            access => [
                class => AccessControl::className(),
                ruleConfig => [
                    class => AccessRule::className(),
                ],
                rules => [
                    [
                        allow => true,
                        roles => [
                            User::ROLE_ADMIN,
                        ],
                    ],
                ],
            ],
        ];
    }

 

yii2-basic后台管理功能开发之五:用户权限的控制

标签:

原文地址:http://www.cnblogs.com/perallina/p/5920335.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!