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/ ...
随机推荐
- 51 Nod 1486 大大走格子
1486 大大走格子 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 160 难度:6级算法题 收藏 关注 有一个h行w列的棋盘,里面有一些格子是不 ...
- 家谱树 x
家谱树 [问题描述] 有个人的家族很大,辈分关系很混乱,请你帮整理一下这种关系. 给出每个人的孩子的信息. 输出一个序列,使得每个人的后辈都比那个人后列出. [输入格式] ...
- R_Studio(学生成绩)对数值型数据进行统计量分析
对“Gary.csv”中的成绩数据进行统计量分析 基础数据分析 均值 中位数 极差 标准差 变异系数 1/4分位数 3/4分位数 四分位间距... ...分析 setwd('D:\\data' ...
- Eclipse常用快捷键与IDEA中的对比.
最近从github下载了一些项目,但是看了一下使用的编译器是IDEA的,所以就下载了一个IDEA. 这边可以提供几个网址:只要是针对各个下载idea之后的一些激活相关的帮助. http://idea. ...
- 从txt导入数据到mysql
当要往mysql的table中录入数据量大的时候,直接从txt录入已有数据是一个愉快的选择. 在录入数据前要做一些格式上的准备 1. txt编码要是utf-8,无BOM 2. 每行以\t\n结尾,每列 ...
- ControlTemplate in WPF —— TreeView
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" x ...
- nodejs 框架 中文express 4.xxx中文API手册
介于最近express 中文文档比较难找的现状,特地找了一个,供大家学习思考 Express 4.x API express 翻译 api文档 中文 -- express() expre ...
- 【ABAP系列】SAP 一个完整的SAP的Abap例子(idoc,edi文件的相互转换)
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP 一个完整的SAP的Aba ...
- 浅谈 MySQL的预编译
之前的一篇 Mybatis中 #{}和${}的区别 中涉及到通过 SQL预编译和 #{} 传值 的方式防止SQL注入. 由此引发了想了解预编译的想法.那么什么是预编译那? 一.三个阶段: 词法和语义解 ...
- nginx配置laravel项目
在/etc/nginx/conf.d下新建一个laravel.conf文件,并编辑 写入如下文件即可 server { listen 80; server_name xxx; root "/ ...