基本的数据对象关系
(1)一个用户对应一个或者多个角色
(2)一个角色对应一个或者多个权限
(3)一个权限对应能工访问对应的API或url资源。
因此,需要五张表,用户表、权限表、角色表、用户与角色对应表、角色与权限对应表。
【注】:先下载源码,体验更好哦~
【源码地址】:https://gitee.com/nanfangzhe/ShiroDemo
【成果】:完成数据库动态权限管理和Redis缓存cache、session
文章目录
一、目录结构:
1. application.properties文件
#项目端口号 server.port=1109 #项目的访问路径加项目名 1.x用第一种方式 2.x用下面的方式配置项目名 server.servlet.context-path=/nanfangzhe #数据库配置 #在最后面加了一个参数 通过设置useSSL=false显式地禁用SSL,或者设置useSSL=true并为服务器证书验证提供信任存储 spring.datasource.url= jdbc:mysql://localhost:3306/shiro?useUnicode=true&characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull&autoReconnect=true&failOverReadOnly=false&maxReconnects=10&&useSSL=false&serverTimezone=Asia/Shanghai spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.jdbc.Driver #返回json的全局时间格式 #spring.jackson.date-format=yyyy-MM-dd HH:mm:ss #spring.jackson.time-zone=GMT+8 ##配置mapper xml文件的路径 mybatis-plus.mapper-locations=classpath:com/nanfangzhe/shirodemo/mapper/xml/*.xml #mybatis日志 mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl #redis配置 #连接redis第2个database spring.redis.database=2 #服务器地址 你的redis地址 spring.redis.host= #redis端口号 spring.redis.port=6379 #redis密码 spring.redis.password= #连接超时时间(毫秒) spring.redis.timeout=0 #连接池最大阻塞等待时间(使用负值表示没有限制) spring.redis.jedis.pool.max-wait=-1 #连接池中的最大空闲连接 spring.redis.jedis.pool.max-idle=8 #连接池中的最小空闲连接 spring.redis.jedis.pool.min-idle=0
2. pom.xml文件
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.6.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>com.nanfangzhe</groupId>
<artifactId>shirodemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>shirodemo</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!--↓↓↓提供SpringMVC必要的组件↓↓↓ -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--↓↓↓mysql依赖↓↓↓ -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--↓↓↓Shiro↓↓↓ -->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-all</artifactId>
<version>1.4.0</version>
</dependency>
<!--↓↓↓lang3↓↓↓ -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.8.1</version><!--$NO-MVN-MAN-VER$ -->
</dependency>
<!--↓↓↓swagger↓↓↓ -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<!--↓↓↓swagger可视化视图↓↓↓ -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
<!--mybatis-plus 持久层 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
<!-- velocity 模板引擎, Mybatis Plus 代码生成器需要 -->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.0</version>
</dependency>
<!-- JSON对象转换 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.31</version>
</dependency>
<!-- shiro+redis缓存插件 -->
<dependency>
<groupId>org.crazycake</groupId>
<artifactId>shiro-redis</artifactId>
<version>3.2.3</version>
</dependency>
<!--jedis -->
<!-- <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId>
</dependency> -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<!-- 打包用的 -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
3. 主要文件
4. MySQL数据库表结构
五张表:
二、需要修改、执行的地方
1. MySQL执行文件