SpringSecurity 3.2入门(8)自定义权限控制数据库设计

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for t_system_authority_info
-- ----------------------------
DROP TABLE IF EXISTS `t_system_authority_info`;
CREATE TABLE `t_system_authority_info` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT ‘权限ID‘,
  `name` varchar(100) DEFAULT NULL COMMENT ‘权限标识‘,
  `cnname` varchar(100) DEFAULT NULL COMMENT ‘权限中文标识‘,
  `insert_date` datetime DEFAULT NULL COMMENT ‘插入时间‘,
  `update_date` datetime DEFAULT NULL COMMENT ‘更新时间‘,
  `order_index` int(4) DEFAULT NULL COMMENT ‘排序‘,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- ----------------------------
-- Table structure for t_system_authority_resource
-- ----------------------------
DROP TABLE IF EXISTS `t_system_authority_resource`;
CREATE TABLE `t_system_authority_resource` (
  `authority_id` int(11) NOT NULL COMMENT ‘权限ID‘,
  `resource_id` int(11) NOT NULL COMMENT ‘资源ID‘,
  PRIMARY KEY (`resource_id`,`authority_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- ----------------------------
-- Table structure for t_system_resource_info
-- ----------------------------
DROP TABLE IF EXISTS `t_system_resource_info`;
CREATE TABLE `t_system_resource_info` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT ‘资源ID‘,
  `name` varchar(50) NOT NULL COMMENT ‘资源标识‘,
  `path` varchar(200) NOT NULL COMMENT ‘资源URL‘,
  `cnname` varchar(50) DEFAULT NULL COMMENT ‘资源中文标识‘,
  `insert_date` datetime DEFAULT NULL COMMENT ‘插入时间‘,
  `update_date` datetime DEFAULT NULL COMMENT ‘更新时间‘,
  `order_index` int(4) DEFAULT NULL COMMENT ‘排序‘,
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`) USING BTREE,
  UNIQUE KEY `path` (`path`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for t_system_role_authority
-- ----------------------------
DROP TABLE IF EXISTS `t_system_role_authority`;
CREATE TABLE `t_system_role_authority` (
  `role_id` int(11) NOT NULL DEFAULT ‘0‘ COMMENT ‘角色ID‘,
  `authority_id` int(11) NOT NULL DEFAULT ‘0‘ COMMENT ‘权限ID‘,
  PRIMARY KEY (`role_id`,`authority_id`),
  KEY `index_role_id` (`role_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for t_system_role_info
-- ----------------------------
DROP TABLE IF EXISTS `t_system_role_info`;
CREATE TABLE `t_system_role_info` (
  `id` int(11) NOT NULL COMMENT ‘角色ID‘,
  `name` varchar(50) NOT NULL COMMENT ‘角色名称‘,
  `cnname` varchar(50) DEFAULT NULL COMMENT ‘角色中文名称‘,
  `parent_id` int(11) DEFAULT NULL COMMENT ‘父角色ID‘,
  `is_use` tinyint(4) DEFAULT ‘1‘ COMMENT ‘1在用,0停用‘,
  `insert_date` datetime DEFAULT NULL COMMENT ‘插入时间‘,
  `update_date` datetime DEFAULT NULL COMMENT ‘更新时间‘,
  `order_index` int(4) DEFAULT NULL COMMENT ‘排序‘,
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for t_system_user_info
-- ----------------------------
DROP TABLE IF EXISTS `t_system_user_info`;
CREATE TABLE `t_system_user_info` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT ‘用户ID‘,
  `username` varchar(50) NOT NULL COMMENT ‘用户名称‘,
  `password` varchar(50) NOT NULL COMMENT ‘密码‘,
  `enabled` tinyint(4) DEFAULT ‘1‘ COMMENT ‘可用(1表示可用,0表示停用)‘,
  `default_role_id` int(11) DEFAULT NULL COMMENT ‘默认使用的角色ID‘,
  `cnname` varchar(50) DEFAULT NULL COMMENT ‘中文名称‘,
  `email` varchar(50) DEFAULT NULL COMMENT ‘邮箱‘,
  `mobile` varchar(50) DEFAULT NULL COMMENT ‘电话‘,
  `department_code` varchar(3) DEFAULT NULL COMMENT ‘组织代码(暂时保留)‘,
  `insert_date` datetime DEFAULT NULL COMMENT ‘插入时间‘,
  `update_date` datetime DEFAULT NULL COMMENT ‘更新时间‘,
  `last_login_date` datetime DEFAULT NULL COMMENT ‘最后登录时间‘,
  `operator_ip` varchar(50) DEFAULT NULL COMMENT ‘操作IP‘,
  PRIMARY KEY (`id`),
  UNIQUE KEY `username` (`username`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for t_system_user_role
-- ----------------------------
DROP TABLE IF EXISTS `t_system_user_role`;
CREATE TABLE `t_system_user_role` (
  `user_id` int(11) NOT NULL DEFAULT ‘0‘ COMMENT ‘用户ID‘,
  `role_id` int(11) NOT NULL DEFAULT ‘0‘ COMMENT ‘角色ID‘,
  PRIMARY KEY (`user_id`,`role_id`),
  KEY `roleId` (`role_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

  数据库设计并没有给表建立相关外键,如有需要请自行添加外键。

数据库模型如图:

时间: 2024-10-07 05:24:38

SpringSecurity 3.2入门(8)自定义权限控制数据库设计的相关文章

springboot2.0整合springsecurity前后端分离进行自定义权限控制

在阅读本文之前可以先看看springsecurity的基本执行流程,下面我展示一些核心配置文件,后面给出完整的整合代码到git上面,有兴趣的小伙伴可以下载进行研究 使用maven工程构建项目,首先需要引入最核心的依赖, <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> <

JavaWeb 角色权限控制——数据库设计

相信各位读者对于角色权限管理这个需求并不陌生.那么是怎么实现的呢?今天小编来说道说道! 1.首先我们来进行数据库的设计,如何设计数据库是实现权限控制的关键: 1)用户表: id:主键.自增.int name:用户名 .varchar account:帐号.varchar password:密码.varchar 2)角色表: id:角色表主键.自增.int roleName:角色昵称.varchar 3)菜单表: id:主键.自增.int menuName:菜单昵称.varchar menuUrl

Android权限机制(三) 针对权限控制如何设计App

随着Android 5.0的到来,原生的权限管理控制功能AppOps终于登场(虽然4.3的代码中已经包含). 它的使用路径是Settings -> Security -> AppOps(有些厂商的ROM可能依然屏蔽着,或名字被修改) AppOps引进的一个新概念"Ops",也就是"Operations"操作.之前的第三方应用(如LBE)和手机厂商ROM(三星.MIUI),都实现了类似功能,但强调的是permission权限.而在AppOps中,ops操作

RBAC用户权限管理数据库设计

http://minjiechenjava.iteye.com/blog/1759482 RBAC用户权限管理数据库设计 博客分类: RBAC 权限设计 RBAC RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成"用户-角色-权限"的授权模型.在这种模型中,用户与角色之间,角色与权限之间,一般者是多对多的关系.(如下图) 角色是什么?可以理解为一定数

关于权限的数据库设计

不管是在网站开发还是MIS系统开发中,涉及到多用户的软件系统都会遇到这个问题,如何比较优雅的解决这个问题也一直是大家经常探讨的热门话题,本文试着谈论一下自己的观点,希望和大家共同切磋. 方法一:    用户表:  T_UserInfo     id     name    对象表:  T_Object     id     name    权限表  T_Access     accessid     userid(外键,来自用户表)     objectid(外键,来自对象表)     acce

SpringSecurity 3.2入门(9)自定义权限控制代码实现

1. 一个自定义的filter,必须包含authenticationManager,accessDecisionManager,securityMetadataSource三个属性,我们的所有控制将在这三个类中实现 . package cn.jxufe.core.security; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.serv

SpringSecurity 3.2入门(10)自定义权限控制认证及授权的过程

上一章的代码实现还存在一些问题,如角色表.权限表的用处没有体现出来,但是已经能完成URL拦截功能,后面将会继续完善认证及授权的过程. 认证及授权的过程如下: 1.容器启动,MyInvocationSecurityMetadataSourceService类执行loadResourceDefine()方法,提取数据库中所有的资源,并将资源URL作为key,资源标识作为value,形成Map结构的数据. 2.用户发送请求,若该请求为设置不拦截属性,则MySecurityFilter类执行doFilt

Java web自定义标签按钮级别权限控制完美诠释(jplogic 快速开发平台)

接下来跟大家聊聊JavaWeb中权限控制,往大的方向说可以聊聊整合应用系统中的权限控制.在聊权限控制之前先跟大家聊聊RBAC.那么什么是RBAC呢?RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联的,用户通过成为适当角色的成员而得到这些角色的权限.这就极大地简化了权限的管理.在一个组织中,角色是为了完成各种工作而创造,用户则依据它的责任和资格来被指派相应的角色,用户可以很容易地从一个角色被指派到另一个角色.角色可依新的需求和系统的

Spring Security教程之基于表达式的权限控制(九)

目录 1.1      通过表达式控制URL权限 1.2      通过表达式控制方法权限 1.2.1     使用@PreAuthorize和@PostAuthorize进行访问控制 1.2.2     使用@PreFilter和@PostFilter进行过滤 1.3      使用hasPermission表达式 Spring Security允许我们在定义URL访问或方法访问所应有的权限时使用Spring EL表达式,在定义所需的访问权限时如果对应的表达式返回结果为true则表示拥有对应的