1. //在登陆页面保存用户的权限信息
    2. // 权限的设置,查询权限表, 让权限表的id==用户表的id
    3. $authority = Db::table('tp_authority')->where([
    4. 'id'=>$res['auth_id']
    5. ])->find();
    6. //将数据保存到session,并转我数组
    7. session('authority', explode(',',$authority['check_name']));
    8. //使用构造函数
    9. public function __construct()
    10. {
    11. // 保留父类的构造函数
    12. parent::__construct();
    13. session_start();
    14. define('C',Request::instance()->controller());
    15. define('A',Request::instance()->action());
    16. // 权限验证
    17. $this->check_authority();
    18. }
    19. // 权限验证
    20. public function check_authority(){
    21. // 判断有没有权限
    22. if(A != 'login' && Session('authority')){
    23. // 查询菜单表的数据
    24. $menu = Db::table('tp_menus')->where([
    25. 'module'=>'admin'
    26. ])->select();
    27. // 准备空数组保存数据,但要给默认数据
    28. $arr = ['index/index','login/login','login/loginOut','user/ajax','user/checkname','order/ajax'];
    29. foreach($menu as $k => $v){
    30. // 判断用户权限数据是否在菜单表中
    31. if(in_array($v['id'],Session('authority'))){
    32. // 用户的所有权限
    33. $arr[] = $v['controller'].'/'.$v['action'];
    34. }
    35. }
    36. // dump(C.'/'.A);die;
    37. // 当用户知道地址的时候,给与判断
    38. if(!in_array(strtolower(C).'/'.A,$arr)){
    39. // echo '<script>alert("权限不足")</script>';
    40. echo '<script>alert("权限不足");window.location.href="'.url('admin/login/loginOut').'"</script>';
    41. }
    42. }
    43. }