zoukankan      html  css  js  c++  java
  • Yii2 基于rbac访问控制

    Yii2 是一款非常强大的PHP底层框架, 牛b的人都喜欢用它, 有时候你们可能会发现, Yii2 底层处理不是很好, 比如: 每次分页, yii底层都会多统计一次数据的总条数!  那只能说你对它还不够了解!

    最近在做控制器的访问控制, 发现了yii自带的基于rbac的一套底层架构, 代码如下:

     1 public function behaviors()
     2 {
     3     return [
     4         'access' => [
     5             //yiifilterAccessControl
     6             'class' => AccessControl::className(),
     7             'only' => ['*'],
     8             'rules' => [
     9                 [
    10                      //允许
    11                     'allow' => true, 
    12                     //控制器下所有方法 
    13                     'actions' => ['*'],
    14                     //登录的情况下  "?"(游客)
    15                     'roles' => '@',
    16                 ],
    17             ],
    18              //不符合rules后的回调, 此方法 重写 yiifilterAccessControl 中的方法denyAccess
    19             'denyCallback' => function($rule, $action){
    20                 //action 对象  $action->id 获取当前web应用下访问接口中的方法
    21                 if($action->id == 'province' || $action->id == 'area'){
    22 
    23                     return;    //回调中断, 程序继续往下执行
    24                 }
    25                 //获取user对象
    26                 $user = Yii::$app->getUser();
    27                 //$user->getIsGuest() 此方法会重新刷新session, 判断当前浏览用户是否是游客身份
    28                 if ($user !== false && $user->getIsGuest()) {
    29                     //302重定向, 返回首页
    30                     $this->redirect('/site/index');
    31                 }
    32 
    33             }
    34         ],
    35     ];
    36 }

     

     当用户登录之后, 可以访问此控制器下的所有接口, 

    而不登陆的情况下只能访问province 和 area 两个方法, 其他接口访问时则会302重定向, 返回首页
    请支持原创!转载时,请注明来源; 链接地址:https://www.cnblogs.com/cleverstone
  • 相关阅读:
    POJ1811 Prime Test
    HDU3864 D_num
    HDU2138 How many prime numbers
    SPOJ1812 LCS2
    SPOJ1811 LCS
    SPOJ8222 NSUBSTR
    BZOJ4237 稻草人
    洛谷P3601 签到题
    ThreadLocal 线程的私有内存
    netty in action 笔记 二
  • 原文地址:https://www.cnblogs.com/cleverstone/p/9155081.html
Copyright © 2011-2022 走看看