国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

實(shí)現(xiàn)權(quán)限訪(fǎng)問(wèn)控制功能

原創(chuàng) 2020-01-10 22:34:30 372
摘要://base.php<?php namespace app\admin\controller; use think\facade\Session; use app\admin\model\RoleModel; use app\admin\model\MenuModel; use think\Controller; class Base extends Controller{ public

//base.php

<?php namespace app\admin\controller;
use think\facade\Session;
use app\admin\model\RoleModel;
use app\admin\model\MenuModel;
use think\Controller;
class Base extends Controller{
public function __construct(){ parent::__construct(); if(!Session::has('user')){ $this->error('您還未登錄,請(qǐng)登錄...','Account/login'); } $this->user = Session::get('user'); //dump($this->user); $group = RoleModel::where('gid',$this->user['gid'])->find(); if(!$group){ $this->request_error('對(duì)不起,您沒(méi)有訪(fǎng)問(wèn)權(quán)限!'); }
$rights = json_decode($group['rights'],true);
$controller = request()->controller();
$action = request()->action();
$res = MenuModel::where(['controller'=>$controller,'method'=>$action])->find();
if(!$res){ $this->request_error('對(duì)不起,您沒(méi)有此功能權(quán)限!'); } if($res['status']!=0){ $this->request_error('對(duì)不起,此功能被禁用!'); } if(!in_array($res['mid'],$rights)){ $this->request_error('對(duì)不起,您沒(méi)有此權(quán)限'); } }
private function request_error($msg){ if(request()->isAjax()){ exit(json_encode(['code'=>1,'msg'=>$msg])); } exit($msg); } }


//index.php

<?php namespace app\admin\controller;

use think\facade\Session;
use app\admin\model\RoleModel;
use app\admin\model\MenuModel;
class Index extends  Base{
public function index(){ //獲取登錄用戶(hù)Session信息 $user= Session::get('user'); //獲取登錄用戶(hù)角色權(quán)限 $pow = RoleModel::where('gid',$this->user['gid'])->find(); //json轉(zhuǎn)換為數(shù)組 $rights = json_decode($pow['rights'],true); //構(gòu)造當(dāng)前用戶(hù)菜單權(quán)限where條件 $where =  'mid in('.implode(',',$rights).') and status=0 and ishidden=0'; //獲取當(dāng)前用戶(hù)權(quán)根的所有菜單 $res = MenuModel::where($where)->select(); //聲明mid索引空數(shù)組 $index = []; //獲取以mid索引數(shù)組 foreach ($res as $val) { $index[$val['mid']] = json_decode($val,true); } //獲取以mid索引數(shù)組菜單層級(jí)關(guān)系 $menu = $this->gettreeitems($index);
//dump($menu); //渲染菜單 $this->view->menu = $menu; //渲染用戶(hù)的title字段 $user['iden'] = $pow['title'];
$this->view->user = $user;
return $this->view->fetch();
}
public function welcome(){
return $this->view->fetch(); } //菜單層級(jí)關(guān)系函數(shù) private function gettreeitems($items){ //聲明返回的數(shù)組 $tree = []; //遍歷索引數(shù)組 foreach ($items as $val) { //如果父PID沒(méi)有值就把$tree數(shù)組定位到$item指針上,有值就增加關(guān)聯(lián)sub字菜單并定位到當(dāng)前數(shù)組指針上 if(isset($items[$val['pid']])){ $items[$val['pid']]['sub'][] = &$items[$val['mid']]; }else{ $tree[] = &$items[$val['mid']]; } } //獲得層級(jí)新數(shù)組 return $tree; } }

//渲染的index.php

<!DOCTYPE html>

<html>

<head>

 <title>后臺(tái)管理系統(tǒng)</title>

 <link rel="stylesheet" type="text/css" href="/static/layui/css/layui.css">

 <script type="text/javascript" src="/static/layui/layui.js"></script>

<style type="text/css">

 body{margin:0;padding:0;}

 .header{width:100%;height:50px;background:#0094ff;color:#ffffff;line-height: 50px;}

 .title{margin-left:20px;font-size:20px;}

 .userinfo{float:right;margin-right:20px;}

 .userinfo a{text-decoration:none;color:#ffffff;}
.menu{position:absolute;width:200px;background:#23262E; }

 .layui-nav{border-radius:0px!important;}

 .layui-nav-tree{border:none;} .layui-nav-item{border:none;}
.main{position:absolute;left:200px;top:50px;right:0px;}

 </style>

</head>

<body>

 <!-- header -->

 <div class="header">

<span class="title">后臺(tái)管理系統(tǒng)</span>

 <span class="userinfo">

{$user.username}【{$user.iden}】<a href="javascript:;" onclick="logout()">退出</a>

</span>

 </div>

 <div class="menu" id="menu">

 <ul class="layui-nav layui-nav-tree">

 {volist name="$menu" id="vo"}

 <li class="layui-nav-item"> <a href="javascript:;">{$vo.title}</a>

 <?php if(isset($vo['sub']) && $vo['sub']) :?>

 {volist name='$vo.sub' id='cvo'}

 <dl class="layui-nav-child">

<dd><a href="javascript:;" onclick="srcpage(this)" src="{:url($cvo.controller.'/'.$cvo.method)}">{$cvo.title}</a>

</dd>

 </dl>

 {/volist}

 <?php endif?>

 </li>

 {/volist}

 </ul>

 </div>
<div class="main"> 

iframe src="{:url('welcome')}" style="width:100%;height:100%" frameborder="0" scrolling="0"></iframe>

 </div>

</body>

 <script> layui.use(['element','layer'],function(){ var element = layui.element; $ = layui.jquery; layer = layui.layer; resetMenuHeight(); })
function logout(){ layer.confirm('確定退出嗎?', { icon:2, btn:['確定','退出'] }, function(){ $.get('{:url(\'Account/logout\')}',function(res){ if(res['code']==0){ layer.msg(res['msg']); setTimeout(function(){window.location.href="{:url('Account/login')}",1000}); } },'json') }
) }
function srcpage(obj){ var src = $(obj).attr('src'); $('iframe').attr('src',src); }
function resetMenuHeight(){ var height = document.documentElement.clientHeight - 50; $('#menu').height(height); $('.main').height(height-3); }
</script>

</html>

批改老師:查無(wú)此人批改時(shí)間:2020-02-27 15:32:23
老師總結(jié):完成的不錯(cuò),后臺(tái)cms管理系統(tǒng),最重要的就是權(quán)限。繼續(xù)加油。

發(fā)佈手記

熱門(mén)詞條