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

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

  • 相关阅读:
    myeclipse源码相关操作
    来自一个程序员内心深处的心声
    编程乐趣--汉字转拼音
    MyEclipse下安装FreeMark插件
    java web 加载Spring --web.xml 篇
    注解方式实现声明式事务管理
    spring与struts简单整合案例
    创建对象与对象依赖关系
    几种对数据的处理以及对数据的封装
    Action开发、通配符、路径问题和struts中常量用法
  • 原文地址:https://www.cnblogs.com/wicub/p/3162726.html
Copyright © 2011-2022 走看看