摘要:<?phpnamespace app\admin\controller;use app\admin\model\Menu;use think\facade\Session;use app\admin\model\AdminGroups;use app\admin\model\Admin;use think\facade\Request;//公共的验证session类 其他类文件继承class<?php
namespace app\admin\controller;
use app\admin\model\Menu;
use think\facade\Session;
use app\admin\model\AdminGroups;
use app\admin\model\Admin;
use think\facade\Request;
//公共的验证session类 其他类文件继承
class Common extends \think\Controller
{
//验证session
public function __construct()
{
parent::__construct();
if(!Session::has('admin')){
$this->error('没有登陆',url('Login/index'));
exit;
}
//验证权限 根据admin表gid到admin_groups表找权限
$admin = Admin::where('id',Session::get('admin.id'))->find();
$group = AdminGroups::where('gid',$admin['gid'])->find();
if(!$group){
$this->requestError('无权访问');
}
//获取当前用户权限
$rights = json_decode($group['rights']);
//获取当前用户访问的控制器 方法名
$controller = Request::controller();
$action = Request::action();
$res = Menu::where('controller',$controller)->where('method',$action)->find();
//访问的控制器方法是否存在
if(!$res){
$this->requestError('控制器方法不存在');
}
//访问的控制器方法是否禁用
if($res['status']==1){
$this->requestError('控制器方法禁用');
}
//判断当前用户是否有权访问当前控制器方法
if(!in_array($res['mid'],$rights)){
$this->requestError('没有权限访问控制器方法');
}
}
//输出错误信息方法
private function requestError($msg){
//判断是否是ajax请求 不是直接返回错误信息
if(Request::isAjax()){
return ['status'=>1,'msg'=>$msg];
}else{
exit($msg);
}
}
}
批改老师:查无此人批改时间:2018-11-19 15:24:35
老师总结:代码好像没复制全,代码的意思是对的。继续加油。