zoukankan      html  css  js  c++  java
  • 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的控制来进行权限的设定.

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

  • 相关阅读:
    CentOS 安装 Xamarin官方Mono
    mongo命令行下去除重复的数据
    通过前端js将页面表格导出为PDF(二)
    通过前端js将页面表格导出为PDF(一)
    ubuntu下手动安装MongoDB
    在django项目下执行定时任务
    django+uwsgi+nginx部署在ubuntu系统上
    Nginx(三)
    Nginx(二)
    Nginx(一)
  • 原文地址:https://www.cnblogs.com/wicub/p/3162726.html
Copyright © 2011-2022 走看看