zoukankan      html  css  js  c++  java
  • 后台账号权限功能实现思路

    每个后台用户都对应几个表:用户信息表,角色表,角色权限表,后台左侧目录节点表

    1:后台栏目都通过节点放入数据库(如下图)

    2:每个控制器都继承一个基类,基类中在构造函数中,获取session中本登录后台用户的角色id,通过这个id进行查询缓存中本用户的角色是有哪些权限

    这样用户在使用后台的方法时,会自动验证该用户有没有权限使用该方法

    class Admin extends  controller    admin是基类
    {
        public  function  _initialize()
        {
           
            parent:: _initialize();
    
            //权限验证开始
            //登陆验证
           if(empty(session("user.name"))){   name是用户名,用于前台显示
                $this->redirect(url("/store_login"));
            }else{
              if(session("user.role_id")!=1){//非超级管理员     role.id是角色id,说明本用户属于超级管理员还是普通管理员
                  $authC=new extendauth();
                  if($authC->operation()==0){
                      $this->error("没有权限!",'/admin/Index/welcome');   通过下面的auth类的方法来判断本后台账户使用的当前控制器方法有没有权限
                  }
    
              }
           }
        }

    auto类代码

    class auth{
        private $RoleId;
        public function __construct()
        {
          $this->RoleId=session("user.role_id");
        }
        //动态权限操作
        public function operation(){
            $status=0;
            $request=	hinkRequest::instance();
            $namef=$request->controller();//当前的控制器,自动获取
            $name=$request->action();// 当前的方法
            if($namef=='Login'||$namef=='Index'){
                $status=1;
            }else{
    
                $nodes=json_decode($this->GetMenuCache("ListThress_CN",3,0),true); // 所有该后台账户的权限节点,可通过数据库查节点表,此处是存入到缓存中
                if(in_array(strtolower($namef.'/'.$name),$nodes)){ 判断当前使用的控制器方法,是否在权限数组中
                    $status=1 ;
                }
            }
    
            return $status;
        }
  • 相关阅读:
    赫尔维茨公式
    从解析几何的角度分析二次型
    Struts 1 Struts 2
    记一次服务器被入侵的调查取证
    契约式设计 契约式编程 Design by contract
    lsblk df
    Linux Find Out Last System Reboot Time and Date Command 登录安全 开关机 记录 帐号审计 历史记录命令条数
    Infrastructure for container projects.
    更新文档 版本控制 多版本并发控制
    Building Microservices: Using an API Gateway
  • 原文地址:https://www.cnblogs.com/yszr/p/11583819.html
Copyright © 2011-2022 走看看