【SpringBoot】【Shiro】【MyBatis-Plus】【Redis】【RBAC模式】Role-Based Access Control(基于角色的访问控制)

基本的数据对象关系

(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执行文件

在这里插入图片描述
在这里插入图片描述

2. MySQL数据库的配置

在这里插入图片描述

3. Redis数据库的配置

在这里插入图片描述

三、结果展示

1. 启动结果(Shiro拦截器工厂类注入)

在这里插入图片描述

2. 登录拦截

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 登录成功,session存入Redis

在这里插入图片描述

4. 访问hello,用户权限cache存入Redis

在这里插入图片描述

四、码云源码地址

https://gitee.com/nanfangzhe/ShiroDemo

猜你喜欢

转载自blog.csdn.net/qq_43263647/article/details/110220940