用户角色权限表

user_info.sql(用户表)

DROP TABLE IF EXISTS `user_info`;
CREATE TABLE `user_info` (
  `uid` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) DEFAULT ‘‘ COMMENT ‘用户名‘,
  `password` varchar(256) DEFAULT NULL COMMENT ‘登录密码‘,
  `name` varchar(256) DEFAULT NULL COMMENT ‘用户真实姓名‘,
  `id_card_num` varchar(256) DEFAULT NULL COMMENT ‘用户身份证号‘,
  `state` char(1) DEFAULT ‘0‘ COMMENT ‘用户状态:0:正常状态,1:用户被锁定‘,
  PRIMARY KEY (`uid`),
  UNIQUE KEY `username` (`username`) USING BTREE,
  UNIQUE KEY `id_card_num` (`id_card_num`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

sys_role.sql(角色表)

DROP TABLE IF EXISTS `sys_role`;
CREATE TABLE `sys_role` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT ‘主键‘,
  `available` char(1) DEFAULT ‘0‘ COMMENT ‘是否可用0可用  1不可用‘,
  `role` varchar(20) DEFAULT NULL COMMENT ‘角色标识程序中判断使用,如"admin"‘,
  `description` varchar(100) DEFAULT NULL COMMENT ‘角色描述,UI界面显示使用‘,
  PRIMARY KEY (`id`),
  UNIQUE KEY `role` (`role`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

sys_user_role.sql(用户-角色表)

DROP TABLE IF EXISTS `sys_user_role`;
CREATE TABLE `sys_user_role` (
  `uid` int(11) DEFAULT NULL COMMENT ‘用户id‘,
  `role_id` int(11) DEFAULT NULL COMMENT ‘角色id‘,
  KEY `uid` (`uid`) USING BTREE,
  KEY `role_id` (`role_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

sys_permission.sql(权限表)

DROP TABLE IF EXISTS `sys_permission`;
CREATE TABLE `sys_permission` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT ‘主键‘,
  `parent_id` int(11) DEFAULT NULL COMMENT ‘父编号,本权限可能是该父编号权限的子权限‘,
  `parent_ids` varchar(20) DEFAULT NULL COMMENT ‘父编号列表‘,
  `permission` varchar(100) DEFAULT NULL COMMENT ‘权限字符串,menu例子:role:*,button例子:role:create,role:update,role:delete,role:view‘,
  `resource_type` varchar(20) DEFAULT NULL COMMENT ‘资源类型,[menu|button]‘,
  `url` varchar(200) DEFAULT NULL COMMENT ‘资源路径 如:/userinfo/list‘,
  `name` varchar(50) DEFAULT NULL COMMENT ‘权限名称‘,
  `available` char(1) DEFAULT ‘0‘ COMMENT ‘是否可用0可用  1不可用‘,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

sys_role_permission.sql(角色-权限表)

DROP TABLE IF EXISTS `sys_role_permission`;
CREATE TABLE `sys_role_permission` (
  `role_id` int(11) DEFAULT NULL COMMENT ‘角色id‘,
  `permission_id` int(11) DEFAULT NULL COMMENT ‘权限id‘,
  KEY `role_id` (`role_id`) USING BTREE,
  KEY `permission_id` (`permission_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

在之前的表中添加数据

#插入用户信息表
INSERT INTO user_info(uid,username,`password`,`name`,id_card_num) VALUES (null,‘admin‘,‘123456‘,‘超哥‘,‘133333333333333333‘);
INSERT INTO user_info(uid,username,`password`,`name`,id_card_num) VALUES (null,‘test‘,‘123456‘,‘孙悟空‘,‘155555555555555555‘);
#插入用户角色表
INSERT INTO `sys_role` (`id`,`available`,`description`,`role`) VALUES (null,0,‘管理员‘,‘admin‘);
INSERT INTO `sys_role` (`id`,`available`,`description`,`role`) VALUES (null,0,‘VIP会员‘,‘vip‘);
INSERT INTO `sys_role` (`id`,`available`,`description`,`role`) VALUES (null,1,‘测试‘,‘test‘);
#插入用户_角色关联表
INSERT INTO `sys_user_role` (`role_id`,`uid`) VALUES (1,1);
INSERT INTO `sys_user_role` (`role_id`,`uid`) VALUES (2,2);
#插入权限表
INSERT INTO `sys_permission` (`id`,`available`,`name`,`parent_id`,`parent_ids`,`permission`,`resource_type`,`url`) VALUES (null,0,‘用户管理‘,0,‘0/‘,‘userInfo:view‘,‘menu‘,‘userInfo/view‘);
INSERT INTO `sys_permission` (`id`,`available`,`name`,`parent_id`,`parent_ids`,`permission`,`resource_type`,`url`) VALUES (null,0,‘用户添加‘,1,‘0/1‘,‘userInfo:add‘,‘button‘,‘userInfo/add‘);
INSERT INTO `sys_permission` (`id`,`available`,`name`,`parent_id`,`parent_ids`,`permission`,`resource_type`,`url`) VALUES (null,0,‘用户删除‘,1,‘0/1‘,‘userInfo:del‘,‘button‘,‘userInfo/del‘);
#插入角色_权限表
INSERT INTO `sys_role_permission` (`permission_id`,`role_id`) VALUES (1,1);
INSERT INTO `sys_role_permission` (`permission_id`,`role_id`) VALUES (2,1);
INSERT INTO `sys_role_permission` (`permission_id`,`role_id`) VALUES (3,2);

根据上面的sql创建实体类

public class User {
    private Integer uid;
    private String username;
    private String password;
    private String name;
    private String id_card_num;
    private String state;
    private Set<Role> roles = new HashSet<>();
}

public class Role {
    private Integer id;
    private String role;
    private String description;
    private String available;
    private Set<User> users = new HashSet<>();
    private Set<Permission> permissions = new HashSet<>();
}

public class Permission {
    private Integer id;
    private Integer parent_id;
    private String parent_ids;
    private String permission;
    private String resource_type;
    private String url;
    private String name;
    private String available;
    private Set<Role> roles = new HashSet<>();
}

编写mapper

@Mapper
public interface UserMapper {
    User findByUserName(String userName);
    int insert(User user);
    int del(@Param("username") String username);
}

@Mapper
public interface RoleMapper {
    Set<Role> findRolesByUserId(@Param("uid") Integer uid);
}

@Mapper
public interface PermissionMapper {
    Set<Permission> findPermissionsByRoleId(@Param("roles") Set<Role> roles);
}

UserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.springboot.test.shiro.modules.user.dao.UserMapper">

    <!-- 查询用户信息 -->
    <select id="findByUserName" resultType="com.springboot.test.shiro.modules.user.dao.entity.User">
        SELECT * FROM user_info WHERE username = #{userName}
    </select>

    <!-- 添加用户 -->
    <!-- 创建用户 -->
    <insert id="insert" parameterType="com.springboot.test.shiro.modules.user.dao.entity.User">
        <selectKey resultType="java.lang.Integer" keyProperty="uid" order="AFTER">
            SELECT
            LAST_INSERT_ID()
        </selectKey>
        insert into user_info
        <trim prefix="(" suffix=")" suffixOverrides="," >
            <if test="uid != null" >
                uid,
            </if>
            <if test="username != null and username != ‘‘" >
                username,
            </if>
            <if test="password != null and password != ‘‘" >
                password,
            </if>
            <if test="name != null and name != ‘‘" >
                `name`,
            </if>
            <if test="id_card_num != null and id_card_num != ‘‘" >
                id_card_num,
            </if>
            <if test="state != null and state != ‘‘" >
                state,
            </if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides="," >
            <if test="uid != null" >
                #{uid},
            </if>
            <if test="username != null and username != ‘‘" >
                #{username},
            </if>
            <if test="password != null and password != ‘‘" >
                #{password},
            </if>
            <if test="name != null and name != ‘‘" >
                #{name},
            </if>
            <if test="id_card_num != null and id_card_num != ‘‘" >
                #{id_card_num},
            </if>
            <if test="state != null and state != ‘‘" >
                #{state},
            </if>
        </trim>
    </insert>

    <!-- 删除用户 -->
    <delete id="del">
        DELETE FROM user_info WHERE username = #{username}
    </delete>

</mapper> 

RoleMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.springboot.test.shiro.modules.user.dao.RoleMapper">

    <!-- 查询用户信息 -->
    <select id="findRolesByUserId" resultType="com.springboot.test.shiro.modules.user.dao.entity.Role">
        SELECT r.* from sys_role r LEFT JOIN sys_user_role ur on r.id = ur.role_id where ur.uid  = #{uid}
    </select>

</mapper> 

PermissionMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.springboot.test.shiro.modules.user.dao.PermissionMapper">

    <!-- 查询用户权限信息 -->
    <select id="findPermissionsByRoleId" resultType="com.springboot.test.shiro.modules.user.dao.entity.Permission">
        SELECT p.* from sys_permission p LEFT JOIN sys_role_permission rp on p.id = rp.permission_id WHERE rp.role_id IN
        <foreach collection="roles" index="index" item="item" open="(" close=")" separator=",">
            #{item.id}
        </foreach>
    </select>

</mapper> 

原文地址:https://www.cnblogs.com/chong-zuo3322/p/12369430.html

时间: 2024-11-07 19:13:15

用户角色权限表的相关文章

学习RBAC 用户&#183;角色&#183;权限&#183;表

t3用户-角色-权限hibernate经典配置

[java] view plain copy print? 用户-角色-权限hibernate经典配置. [java] view plain copy print? 既然有人问起,我就写下说明吧.在文章中间的配置文件那里.权当回忆一下,也帮助更多人.这是以前学校时写的,没有注释.都是贴的代码笔记.看到的莫要见怪.欢迎学习交流. [java] view plain copy print? [java] view plain copy print? 首先是三个实体类: [java] view pla

用户角色权限

1.用户表SYS_USER ID ORG_ID LOGIN_NAME PASSWORD USER_NAME PHONE EMAIL CREATE_TIME LOGIN_TIME 主键ID 组织ID 用户登陆名 用户密码 用户姓名 手机号 电子邮箱 创建时间 登陆时间 2.角色表SYS_ROLE ID ROLE_ID PARENT_ROLE_ID ROLE_NAME CREATE_TIME ROLE_DESCRIPTION 主键ID 角色ID 父级角色ID 角色名称 创建时间 角色描述 3.权限表

RBAC用户角色权限设计方案

转自http://www.cnblogs.com/zwq194/archive/2011/03/07/1974821.html RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成“用户-角色-权限”的授权模型.在这种模型中,用户与角色之间,角色与权限之间,一般者是多对多的关系.(如下图) 角色是什么?可以理解为一定数量的权限的集合,权限的载体.例如:一个论坛系统

Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理

这是本人第一次写,写的不好的地方还忘包含.写这个的主要原因是翔通过这个来学习下EF的CodeFirst模式,本来也想用AngularJs来玩玩的,但是自己只会普通的绑定,对指令这些不是很熟悉,所以就基本不用了.还有最主要的原因就是锻炼下自己的能力.好了其他就不多说了,下面来看下我对这个项目的整体概述吧: 目录: 目录我以后会在这边添加上去的 一.Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理 基本设计 项目中使用到的工具: Visual Studio 2013,

扩展RBAC用户角色权限设计方案

RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成“用户-角色-权限”的授权模型.在这种模型中,用户与角色之间,角色与权限之间,一般者是多对多的关系.(如下图) 角色是什么?可以理解为一定数量的权限的集合,权限的载体.例如:一个论坛系统,“超级管理员”.“版主”都是角色.版主可管理版内的帖子.可管理版内的用户等,这些是权限.要给某个用户授予这些权限,不需要直接将

java用户角色权限设计

实现业务系统中的用户权限管理 B/S系统中的权限比C/S中的更显的重要,C/S系统因为具有特殊的客户端,所以访问用户的权限检测可以通过客户端实现或通过客户端+服务器检测实现,而B/S中,浏览器是每一台计算机都已具备的,如果不建立一个完整的权限检测,那么一个"非法用户"很可能就能通过浏览器轻易访问到B/S系统中的所有功能.因此B/S业务系统都需要有一个或多个权限系统来实现访问权限检测,让经过授权的用户可以正常合法的使用已授权功能,而对那些未经授权的"非法用户"将会将他

用户角色权限 案例

from django.db import models class User(models.Model): """ 用户表 """ username = models.CharField(verbose_name='用户名', max_length=32) password = models.CharField(verbose_name='密码', max_length=64) email = models.EmailField(verbose

[转]扩展RBAC用户角色权限设计方案

原文地址:http://www.iteye.com/topic/930648 RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成“用 户-角色-权限”的授权模型.在这种模型中,用户与角色之间,角色与权限之间,一般者是多对多的关系.(如下图) 角色是什么?可以理解为一定数量的权限的集合,权限的载体.例如:一个论坛系统,“超级管理员”.“版主”都是角色.版主可管理版