abstrak://在基類控制器中實(shí)現(xiàn)訪問(wèn)控制 <?php namespace app\admins\controller; use think\Controller; use util\SysDb; class Base extends Controller { public function __co
//在基類控制器中實(shí)現(xiàn)訪問(wèn)控制 <?php namespace app\admins\controller; use think\Controller; use util\SysDb; class Base extends Controller { public function __construct() { parent::__construct(); $this->_admin = session('admin'); if(empty($this->_admin)){ $this->redirect('Account/login'); } $this->db = new SysDb; $role = $this->db->table('roles')->where(['gid'=>$this->_admin['gid']])->item(); if($this->_admin['username']!='admin' && empty($role)){ session('admin',null); $this->errorInfo('對(duì)不起,您還沒有分配角色,無(wú)法訪問(wèn)后臺(tái)'); } $controller = request()->controller(); $method = request()->action(); $res = $this->db->table('menus')->where(['controller'=>$controller,'method'=>$method])->item(); if(!$res){ $this->errorInfo('對(duì)不起,您訪問(wèn)的菜單不存在'); } if($res['status']){ $this->errorInfo('對(duì)不起,您訪問(wèn)的菜單已禁用'); } if($this->_admin['username']!='admin'){ $rights = !empty($role['rights'])?json_decode($role['rights'],true):[]; if(!in_array($res['menu_id'],$rights)){ $this->errorInfo('對(duì)不起,您沒有權(quán)限訪問(wèn)該菜單'); } } } private function errorInfo($msg) { if(request()->isAjax()){ exit(json_encode(['code'=>1,'msg'=>$msg])); }else{ exit($msg); } } } ?>
Guru membetulkan:韋小寶Masa pembetulan:2019-03-12 09:26:45
Rumusan guru:寫的非常不錯(cuò) 權(quán)限在網(wǎng)站中還是很重要的 沒個(gè)人的角色不同給定的權(quán)限當(dāng)然也是不同的