yii框架製作簡易RBAC權限管理
控制器源碼
<?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權限管理的更多相关文章
- yii框架RBAC權限管理
基于角色的存取控制 (RBAC) 基于角色的存取控制 (RBAC) 提供了一个简单而强大的集中式存取控制机制. 详细的关于 RBAC 和诸多传统的存取控制方案对比的详情,请参阅 Wikipedia. ...
- Step by Step 設定 TFS 2012 Create Team Project 權限 - 避免 TF218017、TF250044
基本上權限的設定和 以往的 TFS 沒有什麼太大的差別 只是這次的權限設定畫面有略作些調整,我還是一併整理一下 當我們用 TFSSetup 的帳號安裝完 TFS 2012 後 想要在自已的電腦上用自已 ...
- YII框架源码分析(百度PHP大牛创作-原版-无广告无水印)
YII 框架源码分析 百度联盟事业部——黄银锋 目 录 1. 引言 3 1.1.Yii 简介 3 1.2.本文内容与结构 3 2.组件化与模块化 4 2.1.框架加载和运行流程 4 ...
- 使用Yii框架完整搭建网站流程入门
下载地址: http://www.yiiframework.com/ http://www.yiichina.com/ 由美籍华人薛强研究而出, Yii 这个名字(读作易(Yee))代表 简单(eas ...
- yii框架
Yii Framework是一个基于组件.用于开发大型 Web 应用的高性能 PHP 框架.Yii提供了今日Web 2.0应用开发所需要的几乎一切功能.Yii是最有效率的PHP框架之一.Yii是创始人 ...
- Yii框架tips(转)
yii的一些小的技巧 http://www.yiichina.com/topic/151 db组件 'schemaCachingDuration'=>3600, 为什么不起做用?需要开缓存 如何 ...
- Yii框架tips
db组件 'schemaCachingDuration'=>3600, 为什么不起做用?需要开缓存 如何在页面下边显示sql的查询时间在log组件的routes中加入 array('class' ...
- [Xamarin] 用Service 來製作一個Notification的時鐘 (转帖)
這篇利用來製作一個會出現在Notification的時鐘,來敘述一下 Service,在你製作的App被關閉時,可以透過Service繼續運行你想處理的部分,當然Service 也有其生命周期 接下來 ...
- Yii框架学习笔记(二)将html前端模板整合到框架中
选择Yii 2.0版本框架的7个理由 http://blog.chedushi.com/archives/8988 刚接触Yii谈一下对Yii框架的看法和感受 http://bbs.csdn.net/ ...
随机推荐
- HDU 6155 Subsequence Count (DP、线性代数、线段树)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=6155 题解 DP+线代好题.(考场上过多时间刚前两题,没怎么想这题--) 首先列出一个DP式: 设\( ...
- LOJ #6358 前夕 (组合计数、容斥原理)
题目链接 https://loj.ac/problem/6358 (另外一道\(4\)的倍数题左转loj #6356) 题意 题面写得就像一坨X一样,我来复述一下吧. 有\(N\)个元素构成的集合,要 ...
- 程序代码运行结果是(abdcbdcb)
public class Test { public static boolean show(char ch) { System.out.print(ch); return true; } publi ...
- 20175215 2018-2019-2 第六周java课程学习总结
第七章 内部类与异常类 1.内部类 Java支持在一个类中定义另一个类,这样的类称作内部类,而包含内部类的类成为内部类的外嵌类 内部类和外嵌类之间重要关系如下 内部类的外嵌类的成员变量在内部类中仍然有 ...
- 【转】Diamond -- 分布式配置中心
特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...
- vue.js环境安装
1.到官网(http://nodejs.cn/download/)下载Node.JS运行环境并安装(由于现在的Node中自带npm包管理器,所以就不需要额外下载npm了) 2.如果是新手,那么建议以引 ...
- 如何限制修改IP地址;如何禁止显示的本地连接属性
现在很多单位都配置了局域网,为了便于进行网络管理,同时为了提高的登录网络的速度,网管人员一般都为局域网中的每台电脑都指定了IP地址.但是在windows环境下其他用户很容易修改IP地址配置,这样就很容 ...
- MethodChannel 实现flutter 与 原生通信
Flutter 步骤 目的:在flutter页面中主动调用原生页面中的方法. 1 在widget中,定义MethodChannel变量 static const MethodChannel metho ...
- idea -- spring datasource配置文件不显示datasource.properties文件对应属性的值,错误提示cannot resolve property key
原文:https://yq.aliyun.com/articles/657711 点击 文件 顶部的 蓝色 MVC application context,修改为Local File
- iOS 图表工具charts之LineChartView
关于charts的系列视图介绍传送门: iOS 图表工具charts介绍 iOS 图表工具charts之LineChartView iOS 图表工具charts之BarChartView iOS 图表 ...