zoukankan      html  css  js  c++  java
  • 在yii中使用Filter实现RBAC权限自动判断

    关于RBAC的使用,我曾经写过一篇文章Yii中使用RBAC完全指南,里面详细介绍了RBAC的部分概念和在Yii中的使用方法。

    在具体的权限判断的时候,使用了user组件的checkAccess方法。但是在使用的时候发现,虽然这个方法是很方便的,但是总不能在每个Action里面都写上权限判断吧,那么每个Action中都会出现以下的代码:

    if(Yii::app()->user->checkAccess(‘admin’))
    {
        //验证通过,进行操作
    }else{
      //验证不通过,进行登录或者抛出错误页面

    重复这样的步骤很是令人崩溃。其实,在日常使用的时候经常是对于Action级别进行权限判断。在Yii中早已准备好了现成的代码:

    <?php
    class XXXController extends CController
    {

        public function filters()
        {
            return array(‘accessControl’);
        }

        public function accessRules()
        {
            return array(

              array(‘allow’, ‘roles’=>array(‘admin’, ‘editor’)));
        }

    accessControl是一个过滤器,会在controller执行的时候进行权限判断。权限规则写在accessRules里面。上面的代码就对所有Action只允许有admin和editor角色的用户访问。

    进一步书写accessRules,你可以精确控制所有的权限。从IP到用户名再到角色,不同的Action进行不同的权限判断,都可以在规则里面写出来。

    关于这个规则的具体写法,官方的指南里面有写,具体位置在:Special Topics => Authentication and Authorization。中文版在:http://www.yiiframework.com/doc/guide/zh_cn/topics.auth

    源文地址:http://dongbeta.com/view/544.html

  • 相关阅读:
    Vue中computed和watch的区别
    JS基础语法
    JDBC
    表设计
    查询语句
    反射
    网络端
    多线程
    HashMap
    IO
  • 原文地址:https://www.cnblogs.com/linksgo2011/p/2791249.html
Copyright © 2011-2022 走看看