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的控制来进行权限的设定.

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

  • 相关阅读:
    浅析匿名内部类
    Neo4j学习实录 下载-安装-springboot操作neo4j
    Objective-C内存管理教程和原理剖析2
    Objective-C内存管理教程和原理剖析
    Objective-C语法快速参考
    Objective-C语法
    一点基础的东西:Objective-C的类型和常量
    IOS开发之----异常处理
    UITextField的详细使用
    TextField知多少
  • 原文地址:https://www.cnblogs.com/wicub/p/3162726.html
Copyright © 2011-2022 走看看