• RBAC (RoleBased Access Control)基于角色的访问控制


    /*用户表*/
    CREATE TABLE IF NOT EXISTS `cms_user`(
     id int auto_increment primary key,
     name varchar(255) not null ,
     password char(32)
    )ENGINE=MyISAM DEFAULT CHARSET=UTF8 ;

    INSERT INTO cms_user (id,name,password) VALUES (1,'admin',md5('admin'));

    /*角色*/
    CREATE TABLE IF NOT EXISTS `cms_role`(
     id int auto_increment primary key,
     name varchar(255) not null,   -- 职员、经理、老板
     remark varchar(255),
     system INT DEFAULT 0     -- 是否系统角色(系统角色不允许删除)
    )ENGINE=MyISAM AUTO_INCREMENT=101 DEFAULT CHARSET=UTF8 ;

    insert into cms_role (id,name,remark,system) values (1,'超级管理员','拥有全部权限',1);

    /*用户角色关系*/
    CREATE TABLE IF NOT EXISTS `cms_user_role`(
     id int auto_increment primary key,
     user_id int not null,
     role_id int not null
    ) ENGINE=MyISAM  DEFAULT CHARSET=UTF8;

    INSERT INTO cms_user_role (user_id,role_id) VALUES (1,1);

    /*节点*/
    CREATE TABLE IF NOT EXISTS `cms_node` (
      `id` int AUTO_INCREMENT PRIMARY KEY,
      `name` varchar(255) NOT NULL,    /*名称(控制器名或动作名 )*/
      `title` varchar(255) ,      /*标题*/
      `pid` int default 0,       /*父ID*/
      `path` varchar(255) DEFAULT '',    /*路径,如 User/add  */
      `remark` text
    ) ENGINE=MyISAM AUTO_INCREMENT=101 DEFAULT CHARSET=UTF8;

    /*访问权限表*/
    CREATE TABLE IF NOT EXISTS `cms_access` (
      `id` int AUTO_INCREMENT PRIMARY KEY,
      `role_id` int  NOT NULL,
      `node_id` int NOT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=UTF8;


     

    rbac一共5个表,同过mvc模式的controller和action的控制来进行权限的设定.

    然而有了角色划分之后,能够对节点进行综合的操作.这样对赋予全线的对象有了更好的设置.

  • 相关阅读:
    android之PackageManager简单介绍
    西门子PLC学习笔记二-(工作记录)
    node.js第十课(HTTPserver)
    ubuntu ???????????? no permissions 问题解决
    Web API 设计摘要
    公共 DNS server IP 地址
    用Unicode迎接未来
    vs2010公布时去除msvcp100.dll和msvcr100.dll图讲解明
    linux串口驱动分析
    C++ 中dynamic_cast<>的用法
  • 原文地址:https://www.cnblogs.com/wicub/p/3162726.html
Copyright © 2020-2023  润新知