springboot+shiro+jwt+mybatiesplus前后端分离项目快速入门(一.项目搭建准备工作)
[传送门>github地址,main分支为项目搭建即第一篇内容,complete分支为整合后的完整代码
旨在帮助小白解决shiro集成与闭坑之作,亦是本人呕心沥血踩坑无数之作
1.建表
-- 包含建库语句
REATE DATABASE IF NOT EXISTS shiro_jwt DEFAULT CHARSET utf8mb4 ;
USE shiro_jwt;
DROP TABLE IF EXISTS `account`;
CREATE TABLE `account` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`account_name` varchar(50) COLLATE utf8_bin DEFAULT NULL COMMENT '登录用户名',
`account_password` varchar(50) COLLATE utf8_bin DEFAULT NULL COMMENT '登录密码',
`secret` varchar(100) COLLATE utf8_bin DEFAULT NULL COMMENT '加密盐',
PRIMARY KEY (`id`),
UNIQUE KEY `uniq_accounname` (`account_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='账号表';
DROP TABLE IF EXISTS `account_role`;
CREATE TABLE `account_role` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键id',
`account_id` bigint(20) DEFAULT NULL COMMENT '账号id',
`role_id` bigint(20) DEFAULT NULL COMMENT '角色id',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='账号-角色 关联表';
DROP TABLE IF EXISTS `permission`;
CREATE TABLE `permission` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`permission_portrayal` varchar(100) COLLATE utf8_bin NOT NULL COMMENT '权限描述',
`parent_id` bigint(20) unsigned DEFAULT NULL COMMENT '父权限ID',
`uri` varchar(500) COLLATE utf8_bin DEFAULT NULL COMMENT '请求uri',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='权限';
DROP TABLE IF EXISTS `role`;
CREATE TABLE `role` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键id',
`role_name` varchar(200) COLLATE utf8_bin DEFAULT NULL COMMENT '角色名',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='角色';
DROP TABLE IF EXISTS `role_permission`;
CREATE TABLE `role_permission` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`role_id` bigint(20) NOT NULL COMMENT '角色ID',
`permission_id` bigint(20) NOT NULL COMMENT '权限ID',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='角色-权限 关联表';
-- 初始化账号
insert into account(account_name,account_password) values ('root','root');
2.权限模型
3.项目搭建
项目结构示意
4.yml配置
spring:
# mysql
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3307/shiro_jwt?characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useUnicode=true
username: root
password: root
## 在404时抛出异常
mvc:
throw-exception-if-no-handler-found: true
resources:
add-mappings: false
application:
name: shicilang-shiro测试项目
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #开启sql日志
mapper-locations: classpath:mapper/*.xml
server:
port: 9527
logging:
level:
root: info
com:
shicilang:
dao: debug
shiro:
loginUrl: /login
5.pom依赖
这里采用的依赖是shiro-spring 1.8.0版本,亦有spring-boot整合版本,有兴趣的朋友可以替换尝试
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<!-- <version>2.3.5.RELEASE</version>-->
</dependency>
<!-- Shiro 依赖 -->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.8.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.9</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>