RBAC

Posted azzy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RBAC相关的知识,希望对你有一定的参考价值。

//登陆控制器   
function  actionLogin(){
        $name=Yii::$app->request->post("name");

        $pass=Yii::$app->request->post("pass");
       $res= Yii::$app->db->createCommand("select * from user where name=‘$name‘ and pass=‘$pass‘")->queryOne();

       if ($res){
             $session=Yii::$app->session;
            $session->set("uid",$res[‘id‘]);
             $id=$res[‘id‘];

         $sql=Yii::$app->db->createCommand("SELECT * from user join u_t on  `user`.id=u_t.u_id join teacher on u_t.t_id=teacher.id JOIN t_p  on teacher.id=t_p.t_id join power on t_p.p_id=power.id where `user`.id=$id")->queryAll();

         $session->set("power",json_encode($sql));
         return $this->redirect(["one/show"]);

       }else{
           echo "<a href=‘add‘>登陆失败</a>";
       }
    }
//权限控制器 
 function  init()
    {
      $session=Yii::$app->session;
      $id=$session->get("uid");

     if (empty($id)){
         echo "<a href=‘/mon/add‘>权限不足</a>";
     }

     $power= $session->get("power");
      $power= json_decode($power);
     foreach ($power as $k=>$v){
             $arr[]=$v->controller.‘/‘.$v->function;
     }
      $res=Yii::$app->requestedRoute;

     if (!in_array($res,$arr)){
     echo "<a href=‘/mon/add‘>权限不足</a>";die;
     }

    }


    function   actionShow(){
       $session=Yii::$app->session;
       $data=$session->get("power");
       $arr=json_decode($data,1);

      $res= $this->gettree($arr,0);
      return   $this->render("show",["res"=>$res]);
    }


   function  gettree($data,$pid){
         $tree=[];
        foreach ($data as $k=>$v){
             if ($v[‘pid‘]==$pid){
                 $v[‘son‘]=$this->gettree($data,$v[‘id‘]);
                 $tree[]=$v;
             }
        }
        return $tree;
   }
//权限展示
//权限展示
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
 <table>
     <?php  foreach ($res as $key=>$value){?>
    <tr>
        <?php  echo  $value[‘power‘] ?><br>
        <?php  foreach ($value[‘son‘] as $k=>$v){?>
             <a href="<?php echo $v[‘function‘] ?>"><?php  echo  $v[‘power‘] ?><br></a>

             </tr>
         <?php  }?>
  <?php  }?>



 </table>
</body>
</html>

以上是关于RBAC的主要内容,如果未能解决你的问题,请参考以下文章

做网站-RBAC权限数据库设计

RBAC 基于角色的访问控制演示

Django项目中的实现rbac功能

k8s学习-基于角色的权限控制RBAC(概念,模版,创建,删除等)

k8s学习-基于角色的权限控制RBAC(概念,模版,创建,删除等)

产品经理必须掌握的权限模型