查看原文
其他

Spring Boot+JWT+Shiro+MyBatisPlus 实现 RESTful 快速开发后端脚手架!

点击关注 👉 后端架构师 2023-09-18

推荐关注

扫码关注“后端架构师”,选择“星标”公众号

重磅干货,第一时间送达!

责编:架构君 | 作者:我叫刘半仙,来源:OSC社区


上一篇好文:马斯克认错:裁掉他们是我最大的错误,但黑粉们却没能笑太久...


大家好,我是后端架构师。



前几天,有不少人问我,有没有基于 SpringBoot 的脚手架项目。今天我就推荐一个基本的框架脚手架,特别是学会使用 jwt + shiro 的权限组合!其实有了 SpringBoot 后,项目搭建的难度一降再降,可还是有人想偷懒,就怕你几年后会后悔!

一、背景

前后端分离已经成为互联网项目开发标准,它会为以后的大型分布式架构打下基础。SpringBoot 使编码配置部署都变得简单,越来越多的互联网公司已经选择 SpringBoot 作为微服务的入门级微框架。

Mybatis-Plus 是一个 Mybatis 的增强工具,有代码生成器,并且提供了类似 hibernate 的单表 CRUD 操作,又保留了 mybatis 的特性支持定制化 SQL。

Apache Shiro 是一款强大易用的 Java 安全框架,Java 官方推荐使用 Shiro,它比 Spring Security 更简单易用,Spring 自己的系列 Spring side4 也把权限扩建换成 Shiro 了。

牛逼啊!接私活必备的 N 个开源项目!赶快收藏

现在 API 越来越流行,如何安全保护这些 API?JSON Web Tokens(JWT) 能提供基于 JSON 格式的安全认证。JWT 可以跨不同语言,自带身份信息,并且非常容易传递。

二、项目特性

  1. 自定义 @Log 注解自动记录日志到数据库。

  2. 自定义 @Pass 注解接口不用进行认证身份。

  3. 使用 JSONObject 统一获取 body 请求参数,减少实体类的数量。完成自定义 @ValidationParam 注解验证请求参数是否为空。

  1. 使用 bcrypt 算法加密密码,著名代码托管网站 Github 和美国军方防火墙同样采用此算法,靠 bcrypt 算法会成功保住密码强度不算很高的大部分账户。

  2. 搭配 Shiro 注解配置权限,高度灵活,提供按钮级别的权限控制,后端接口只验证权限,不看角色。用自定义 @CurrentUser 注解获取当前登录用户,Controlle 层统一异常处理:

  1. 用 SpringAOP 切面编程进行声明式事务,过滤请求参数,防止 XSS 攻击。

  2. 使用 POST 请求登录返回 token 和权限信息 (service 层增删改方法命名规范会自动加上事物),保证请求无状态,返回实体如果属性为空不显示。

三、程序逻辑

  1. 填写用户名密码用 POST 请求访问 / login 接口,返回 token 令牌等信息,失败则直接跳转 401 错误页面。微信搜索公众号:Java后端编程,回复:java 领取资料 。

  2. 在之后需要验证身份的请求的 Headers 中添加 Authorization 和登录时返回的 token 令牌。

  1. 服务端进行 token 认证,失败跳转 401 页面。

  2. 用 JWT 做认证(登录),Shiro 做授权。

四、运行项目

项目结构:

  • 通过 git 下载源码,本项目基于 JDK1.8
  • 采用 Maven 项目管理,模块化,导入 IDE 时直接选定 liugh-parent 的 pom 导入
  • 创建数据库 liugh,数据库编码为 UTF-8,执行 liugh.sql 文件,初始化数据
  • 修改 application-dev.properties,更新 MySQL 账号和密码
  • Eclipse、IDEA 运行 SpringbootApplication.java,则可启动项目。或在 liugh-parent 目录下运行命令 mvn clean package,然后在 liugh-web/target 目录下运行 java -jar liugh-web.jar 命令
  • 另外,搜索公众号Linux就该这样学后台回复“猴子”,获取一份惊喜礼包。
  • 启动一个 redis 服务
  • 访问登录接口:localhost:8081/api/login
  • 账号密码:13888888888/123456
  • 获取 token 访问其他接口
  • 注意!!!!! 访问的接口 url 统一会加上 / api/v1; 编译器请安装 lombok 插件, 不然会报红

运行截图:

这个项目注释完整,并且自定义了启动图案~

GitHub 地址:github.com/qq53182347/liugh-parent


欢迎有需要的同学试试,如果本文对您有帮助,也请帮忙点个 赞 + 在看 啦!❤️

在 GitHub猿 还有更多优质项目系统学习资源,欢迎分享给其他同学吧!

PS:如果觉得我的分享不错,欢迎大家随手点赞、转发、在看。


最后给读者整理了一份BAT大厂面试真题,需要的可扫码加微信备注:“面试”获取。


版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢!

END

最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。在这里,我为大家准备了一份2021年最新最全BAT等大厂Java面试经验总结。

别找了,想获取史上最全的Java大厂面试题学习资料

扫下方二维码回复「面试」就好了

历史好文:

比特币又爆了。。。

分享一个牛逼的开源后台管理系统,不要造轮子了(附源码)!

基于SpringBoot 的CMS系统,拿去开发企业官网真香

10w 行级别数据的 Excel 导入优化记录

面试官:MySQL 批量插入,如何不插入重复数据?

写代码爬取了某 Hub 资源,只为撸这个鉴黄平台!

一款数据可视化分析平台,自由制作任何您想要的数据看板,支持接入SQL、CSV、Excel、HTTP接口、JSON等多种数据源!

快速搭建自己的物联网平台,支持数据流转、数据可视化、报警中心等模块!

世界上最快的内存数据库横空出世,比 Redis 快 25 倍,Star 数飙升,杀疯了!

如何使用 Gateway 搭建网关服务及实现动态路由?

Docker + IntelliJ IDEA,助你提升 10 倍生产力!

牛逼啊!一款在线爬虫系统,不写代码即可完成爬虫!

教你实现 SSO 单点登录

公司新来一个同事,把优惠券系统设计的炉火纯青!

扫码关注“后端架构师”,选择“星标”公众号

重磅干货,第一时间送达!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存