• yii之srbac详解


    一、安装篇

    1、下载http://www.yiiframework.com/extension/srbac/ 将解压得到的srbac文件夹放在moudles目录下。

    2、在项目的主配置文件中mai.php:

    'modules'=>array(
            // uncomment the following to enable the Gii tool
    
            'gii'=>array(
                'class'=>'system.gii.GiiModule',
                'password'=>'123123',
                // If removed, Gii defaults to localhost only. Edit carefully to taste.
                'ipFilters'=>array('127.0.0.1','::1'),
            ),
    
            'srbac' => array(
                'userclass'=>'User', //default: User
                'userid'=>'userid', //default: userid
                'username'=>'username', //default:username
                'delimeter'=>'@', //default:-
                'debug'=>false, //default :false
                'pageSize'=>10, // default : 15
                'superUser' =>'Authority', //default: Authorizer
                'css'=>'srbac.css', //default: srbac.css
                'layout'=>
                    'application.views.layouts.main', //default: application.views.layouts.main,
                //must be an existing alias
                'notAuthorizedView'=> 'srbac.views.authitem.unauthorized', // default:
                //srbac.views.authitem.unauthorized, must be an existing alias
                'alwaysAllowed'=>array( //default: array()
                    'SiteLogin','SiteLogout','SiteIndex','SiteAdmin',
                    'SiteError', 'SiteContact','UserIndex'),
                'userActions'=>array('Show','View','List'), //default: array()
                'listBoxNumberOfLines' => 15, //default : 10 'imagesPath' => 'srbac.images', // default: srbac.images 'imagesPack'=>'noia', //default: noia 'iconText'=>true, // default : false 'header'=>'srbac.views.authitem.header', //default : srbac.views.authitem.header,
                //must be an existing alias 'footer'=>'srbac.views.authitem.footer', //default: srbac.views.authitem.footer,
                //must be an existing alias 'showHeader'=>true, // default: false 'showFooter'=>true, // default: false
                'alwaysAllowedPath'=>'srbac.components', // default: srbac.components
                // must be an existing alias )
            ),
    
    
        ),
    'import'=>array(
            'application.models.*',
            'application.components.*',
            'application.modules.srbac.controllers.SBaseController',
        ),
    'components'=>array(
            'user'=>array(
                // enable cookie-based authentication
                'allowAutoLogin'=>true,
            ),
            
            'authManager' => array(
                'class'=>'srbac.components.SDbAuthManager',
                // The database component used
                'connectionID'=>'db',
                // The itemTable name (default:authitem)
                'itemTable'=>'authitem',
                // The assignmentTable name (default:authassignment)
                'assignmentTable'=>'authassignment',
                // The itemChildTable name (default:authitemchild)
                'itemChildTable'=>'authitemchild',
            ),
    
            // uncomment the following to use a MySQL database
    
            'db'=>array(
                'connectionString' => 'mysql:host=localhost;dbname=demo4',
                'emulatePrepare' => true,
                'username' => 'root',
                'password' => 'root',
                'charset' => 'utf8',
            ),

    配置完毕,还需要一个User模型,至少含有userid,username两个选项,与上面的配置文件中保持一致。用gii工具生成User模型。通过域名/index.php/srbac进行访问进入安装界面,以上选项都具备时,安装成功。

    二、使用篇

    1、使用之前的几个小问题。

    (1)界面中文化

       将srbac/message下的zh文件夹复制一份为zh_cn,在main.php中添加配置选项'language'=>'zh_cn'即可。

    (2)自动检测,如果没有自动检测,在需要调用权限的检查的方法时候都要进行添加代码的检测,如Yii::app()->user->checkAccess('createPost'),满足了才继续向下执行。开启自动检测需要下面两个条件:

        将配置文件中的 'debug'选项设置为false,如上所示;

        然后将components组件中的Controller.php中的:

    class Controller extends CController
    

        改为:

    class Controller extends SBaseController
    

      这样就会自动进行检测了。并且只有继承了SBaseController,才能在界面中使用自动生成opreation和task的功能。

    (3)设置只有超级管理员才可以访问Srbac,安装完成后默认的都可以访问。

      在配置文件中有这个选项:'superUser' =>'Authority',  这个Authority就是一个管理srbac的唯一的一个角色,只要将这个角色分配给一个特定的用户,那么就只有这个用户可以访问srbac了。

     (4) 明确这个srbac只是一个工具,更方便的来实现rbac,用yii单纯的代码一样可以完成工作。比如在配置好了上面的选项以后,如果用代码生成规则如下:

    $auth=Yii::app()->authManager;
    
            $auth->createOperation('createPost','create a post');
            $auth->createOperation('readPost','read a post');
            $auth->createOperation('updatePost','update a post');
            $auth->createOperation('deletePost','delete a post');
    
            $bizRule='return Yii::app()->user->id==$params["post"]->authID;';
            $task=$auth->createTask('updateOwnPost','update a post by author himself',$bizRule);
            $task->addChild('updatePost');

    这些数据将会写入数据表中,并且在这个Srbac也可以读到这些数据。

      

    2、srbac中是分了四层:操作、任务、角色、用户。

         

  • 相关阅读:
    中国剩余定理及拓展
    20191128-1 总结
    获取动态图
    弹球游戏设计
    作业要求 20191121-1 每周例行报告
    作业要求 20191114-1 每周例行报告
    对现组内成员的感谢
    作业要求 20191107-1 每周例行报告
    20191031-1 每周例行报告
    作业要求 20191024-1每周例行报告
  • 原文地址:https://www.cnblogs.com/webclz/p/3914327.html
Copyright © 2020-2023  润新知