控制器源碼

 <?php
namespace app\controllers; use yii;
use yii\web\Controller; class PowerController extends Controller
{
public function actionLogin()
{
return $this->render('login');
}
public function actionLogin_do()
{
$name = yii::$app->request->post('name'); $password = yii::$app->request->post('password');
$session = yii::$app->session;
$data = yii::$app->db->createCommand("select * from user where name='$name' and password = '$password'")->queryOne();
if ($data){
$session->set("uid",$data['id']);
$id = $data['id'];
$res = yii::$app->db->createCommand("select * from user JOIN u_r on `user`.id=u_r.u_id JOIN route on route.id=u_r.u_id JOIN r_p on u_r.r_id=r_p.r_id JOIN power on r_p.p_id=power.id where `user`.id='$id'")->queryAll();
$session->set("power",json_encode($res));
return 1;
}else{
return 2;
}
}
}
 <?php
namespace app\controllers; use yii;
use yii\web\Controller; class RouteController extends Controller
{
//初始化頁面
public function init()
{
//開啟session
$session = yii::$app->session;
//獲取id
$id = $session->get('uid');
//判斷用戶id
if (empty($id)){
echo "<a href='/power/login'>請重新登錄</a>";
}
$power = $session->get("power");
$data = json_decode($power);
foreach ($data as $key=>$val){
$arr[] = $val->controller.'/'.$val->action;
}
$nowroute = yii::$app->requestedRoute;
if (!in_array($nowroute,$arr)){
echo "<a href='/power/login'>權限不夠,請重新登錄</a>";
}
// echo "<pre>";
// var_dump($arr);die;
}
//菜單欄目展示
public function actionList()
{
//開啟session
$session = yii::$app->session;
//獲取權限
$power = $session->get("power");
$power = json_decode($power,1);
$data = $this->actionGettree($power,0);
return $this->render('list',['data'=>$data]);
}
//無限極分類權限菜單欄
public function actionGettree($data,$p_id)
{
$arr = [];
foreach ($data as $key=>$val){
if ($val['p_id']==$p_id){
$val['son'] = $this->actionGettree($data,$val['id']);
$arr[] = $val;
}
}
return $arr;
}
public function actionShowlist()
{
$data = yii::$app->db->createCommand("select * from message")->queryAll();
return $this->render('showlist',['data'=>$data]);
}
public function actionAjaxsex()
{
$id = yii::$app->request->post('id');
$sex = yii::$app->request->post('sex');
if ($sex=="男"){
$sexx="女";
yii::$app->db->createCommand("update message set sex = 1 where id = '$id' ")->execute();
echo json_encode($sexx);
}else if ($sex=="女"){
$sexx="男";
yii::$app->db->createCommand("update message set sex = 0 where id = '$id' ")->execute();
echo json_encode($sexx);
}
}
}

視圖層源碼

 <!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>登錄頁面</title>
</head>
<body>
<center>
<h1>登錄頁面</h1>
<table border="1">
<tr>
<td>用戶名:</td>
<td><input type="text" name="name" id="name"></td>
</tr>
<tr>
<td>密碼:</td>
<td><input type="text" name="password" id="password"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="button" class="btn" value="登錄"></td>
</tr>
</table>
</center>
</body>
</html>
<script src="../js/jquery-3.3.1.min.js"></script>
<script>
$(document).on("click",".btn",function () {
var name = $("#name").val();
var password = $("#password").val();
$.ajax({
url:"login_do",
type:"post",
dataType:"json",
data:{
name:name,
password:password,
},
success:function (data) {
console.log(data);
if (data==1){
alert("登錄成功");
location.href = "http://localhost/qianduan/yiirbac/basic/web/route/list";
} else {
alert("登錄失敗")
}
}
})
})
</script>
 <!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>
<?php foreach ($data as $key=>$val){?>
<?php echo $val['power_name']?><br>
<?php foreach ($val['son'] as $k=>$v){?>
<a href="<?php echo $v['action']?>"><?php echo $v['power_name']?></a><br>
<?php }?>
<?php }?>
</body>
</html>
 <!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>列表展示頁面</title>
</head>
<body>
<center>
<h1>列表展示頁面</h1>
</center>
<table class="table table-striped">
<tr>
<td>編號</td>
<td>用戶名</td>
<td>郵箱</td>
<td>詳細地址</td>
<td>性別</td>
<td>操作</td>
</tr>
<?php foreach ($data as $key=>$val) {?>
<tr>
<td><?php echo $val['id']?></td>
<td><?php echo $val['username']?></td>
<td><?php echo $val['email']?></td>
<td><?php echo $val['address']?></td>
<td id="<?php echo $val['id']?>" class="se" dat-sex="<?php echo $val['sex']?>"><?php
if ($val['sex']==0){
echo "男";
}else if ($val['sex']==1){
echo "女";
}
?>
</td>
<td><a href="#">刪除</a>|<a href="update?id=<?php echo $val['id']?>">編輯</a></td>
</tr>
<?php }?>
</table>
</body>
</html>
<script src="../js/jquery-3.3.1.min.js"></script>
<script>
$(document).on("click",".se",function () {
var id = $(this).attr('id'); var sex = $(this).attr("dat-sex");
var that = $(this);
var strsex = "";
if (sex==0){
strsex = "男";
} else {
strsex = "女";
}
$.ajax({
url:"ajaxsex",
type:"post",
dataType:"json",
data:{
id:id,
sex:strsex,
},
success:function (data) {
console.log(data);
if (data=="男"){
that.text("男");
that.attr("dat-sex",0)
} else {
that.text("女");
that.attr("dat-sex",1)
}
}
})
})
</script>

yii框架製作簡易RBAC權限管理的更多相关文章

  1. yii框架RBAC權限管理

    基于角色的存取控制 (RBAC) 基于角色的存取控制 (RBAC) 提供了一个简单而强大的集中式存取控制机制. 详细的关于 RBAC 和诸多传统的存取控制方案对比的详情,请参阅 Wikipedia. ...

  2. Step by Step 設定 TFS 2012 Create Team Project 權限 - 避免 TF218017、TF250044

    基本上權限的設定和 以往的 TFS 沒有什麼太大的差別 只是這次的權限設定畫面有略作些調整,我還是一併整理一下 當我們用 TFSSetup 的帳號安裝完 TFS 2012 後 想要在自已的電腦上用自已 ...

  3. YII框架源码分析(百度PHP大牛创作-原版-无广告无水印)

           YII 框架源码分析    百度联盟事业部——黄银锋 目 录 1. 引言 3 1.1.Yii 简介 3 1.2.本文内容与结构 3 2.组件化与模块化 4 2.1.框架加载和运行流程 4 ...

  4. 使用Yii框架完整搭建网站流程入门

    下载地址: http://www.yiiframework.com/ http://www.yiichina.com/ 由美籍华人薛强研究而出, Yii 这个名字(读作易(Yee))代表 简单(eas ...

  5. yii框架

    Yii Framework是一个基于组件.用于开发大型 Web 应用的高性能 PHP 框架.Yii提供了今日Web 2.0应用开发所需要的几乎一切功能.Yii是最有效率的PHP框架之一.Yii是创始人 ...

  6. Yii框架tips(转)

    yii的一些小的技巧 http://www.yiichina.com/topic/151 db组件 'schemaCachingDuration'=>3600, 为什么不起做用?需要开缓存 如何 ...

  7. Yii框架tips

    db组件 'schemaCachingDuration'=>3600, 为什么不起做用?需要开缓存 如何在页面下边显示sql的查询时间在log组件的routes中加入 array('class' ...

  8. [Xamarin] 用Service 來製作一個Notification的時鐘 (转帖)

    這篇利用來製作一個會出現在Notification的時鐘,來敘述一下 Service,在你製作的App被關閉時,可以透過Service繼續運行你想處理的部分,當然Service 也有其生命周期 接下來 ...

  9. Yii框架学习笔记(二)将html前端模板整合到框架中

    选择Yii 2.0版本框架的7个理由 http://blog.chedushi.com/archives/8988 刚接触Yii谈一下对Yii框架的看法和感受 http://bbs.csdn.net/ ...

随机推荐

  1. [JZOJ6244]【NOI2019模拟2019.7.1】Trominoes 【计数】

    Description n,m<=10000 Solution 考虑暴力轮廓线DP,按顺序放骨牌 显然轮廓线长度为N+M 轮廓线也是单调的 1表示向上,0表示向右 N个1,M个0 只能放四种骨牌 ...

  2. [游记]CSP2019-S

    Day 1 开局看到T1格雷码,哇塞这不是初赛原题???10分钟高精打完离场. T2是个什么题目,看起来不难,15分钟码完,调了5分钟,过了样例2 欸,为什么样例3过不掉?仔细一看发现爆栈了,一慌忘记 ...

  3. java 调用腾讯云短信api

    依赖: <!--腾讯短信依赖--> <dependency> <groupId>com.github.qcloudsms</groupId> <a ...

  4. python 生成随机数的几种方法

      随机取一个: import random random.choice(string.digits)#从数字里随机选取一位数字: 随机取多位数:   random.sample(string.dig ...

  5. 第五次实验报告&学习总结

    一.实验目的 (1) 理解抽象类与接口的使用; (2)了 解包的作用,掌握包的设计方法. 二.实验要求 (1)掌 握使用抽象类的方法. (2)掌 握使用系统接口的技术和创建自定义接口的方法. (3) ...

  6. 三、Linux下mysql的完整安装

    参考资料:http://www.cnblogs.com/fly1988happy/archive/2011/11/21/2257682.html http://www.cnblogs.com/xion ...

  7. 三、smarty--变量调节器(修改器)

    变量调节器(修改器) 作用: 1.  从PHP中分配个模板的变量 2.  需要模板中对变量在输出前进行处理 3.  处理方式就是使用“函数” 4.  在smarty3中可以直接调用到PHP的函数 5. ...

  8. 4.数据挖掘的数据仓库与OLAP技术

    1.什么是数据仓库 面向主题的.集成的.时变的.非易失的 2.数据仓库和异种DBMS 3.OLTP vs OLAP 4.为什么建立分离的数据仓库? 5.多维数据模型(数据仓库的概念建模)三类度量 4. ...

  9. Mac 安装 Novicat

    https://blog.csdn.net/jor_ivy/article/details/81323199 详细见这篇文章

  10. assert断言用法

    使用assert断言是学习python一个非常好的习惯,python assert 断言句语格式及用法很简单.在没完善一个程序之前,我们不知道程序在哪里会出错,与其让它在运行最崩溃,不如在出现错误条件 ...