知道的越多,不知道的就越多,业余的像一棵小草!

编辑:业余草
来源:https://www.xttblog.com/?p=4988

题外话:

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

一、背景

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

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

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

现在 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 错误页面。

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

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

  4. 用 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 命令

  • 启动一个 redis 服务

  • 访问登录接口:localhost:8081/api/login

  • 账号密码:13888888888/123456

  • 获取 token 访问其他接口

  • 注意!!!!! 访问的接口 url 统一会加上 / api/v1; 编译器请安装 lombok 插件, 不然会报红

运行截图:

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

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

第一次做自己的项目,经验不足,如果大家有什么好的意见或批评,请务必 issue 一下。

基于脚手架 3 分钟搞定 SpringBoot 后端管理项目相关推荐

  1. java 不重启部署_一篇文章带你搞定SpringBoot不重启项目实现修改静态资源

    一.通过配置文件控制静态资源的热部署 在配置文件 application.properties 中添加: #表示从这个默认不触发重启的目录中除去static目录 spring.devtools.res ...

  2. 3分钟搞定SpringBoot+Mybatis+druid多数据源和分布式事务

    在一些复杂的应用开发中,一个应用可能会涉及到连接多个数据源,所谓多数据源这里就定义为至少连接两个及以上的数据库了. 下面列举两种常用的场景: 一种是读写分离的数据源,例如一个读库和一个写库,读库负责各 ...

  3. 20天时间,一个人怎么搞定这个后台管理项目

    2019独角兽企业重金招聘Python工程师标准>>> 经过20天的沟通与开发,一个新项目终于成功交付了.目前产品运行良好,与客户的远程合作还算顺利,进度把握的也很好,算是比较成功的 ...

  4. 10分钟搞定 SpringBoot 如何优雅读取配置文件?

    本文以及收录自springboot-guide(不只是SpringBoot还有Spring重要知识点),地址:https://github.com/Snailclimb/springboot-guid ...

  5. java 分组报表_【Java】分组报表怎么做,积木报表十分钟搞定!

    首页 专栏 java 文章详情 0 分组报表怎么做,积木报表十分钟搞定! scott发布于 今天 12:24 报表需求 某大型超市需要做一张年度区域销售统计报表 展示2019和2020年度各地区每月的 ...

  6. 启程 - 《每日五分钟搞定大数据》

    <每日五分钟搞定大数据>原创系列,每周不定期更新.欢迎关注公众号:大叔据   想了很久,准备开始写一系列的文章,记录这些年来的所得所想,感觉内容比较多不知从哪里开始,画了个思维导图确定了大 ...

  7. JeecgBoot 单体升级微服务快速方案(十分钟搞定)

    JeecgBoot 单体升级微服务方案(十分钟搞定) 当前系统分为system.demo 等模块,现有需求把每个模块单独启动作为微服务应用,故而推出新版boot[20200812beta],支持快速切 ...

  8. 服务器添加管理员隐藏账号,绝招:隐藏管理员账号 三分钟搞定

    绝招:隐藏管理员账号 三分钟搞定 更新时间:2007年07月30日 11:30:59   作者: 对regedit.exe大家都很熟悉,但却不能对注册表的项键设置权限,而regedt32.exe最大的 ...

  9. 逗号后面统一加空格_十分钟搞定字幕,教你做加字幕的“快手菜”

    平台上许多同学有疑问:做视频是否有加字幕的必要呢? 其实除了外语需要翻译.语速过快加字幕方便理解.普通话不标准等情况之外,还是建议有余力的同学可以加上字幕,提升用户的观看体验. 那么问题来了,存在以下 ...

最新文章

  1. linux rust 卸载,linux宝塔面板安装rust
  2. vlan 二三层转发
  3. java class 生成对象_Java反射机制(创建Class对象的三种方式)
  4. SpringBoot+Junit在IDEA中实现查询数据库的单元测试
  5. 辰星计划2021 | 旷视春季实习生招募—空中宣讲会第二弹来了!
  6. JavaScript消息框
  7. 代码质量差,啥都干不好!丨技术大牛:你的代码正在毁掉你!
  8. Linux常见目录含义及功能
  9. Hadoop的基本结构介绍(原创)
  10. 30岁中专自学java,19岁中专毕业 工作两年感觉就是混日子 想再去学个软件编程 我这个学历学他有前途吗?...
  11. 案例分享——低压电力线载波通信模组(借助电源线实现远距离数据传输、宽压输入、波特率范围广、应用场景多样化)
  12. 快速读懂CAN报文 DBC文件 解析文件
  13. el-input和和filter结合实现实时搜索
  14. Android使用FFmpeg 解码H264并播放(三)
  15. 系统间通讯实现数据信息实时同步解决方案
  16. 分类算法-决策树、随机森林
  17. 用在线工具processOn画UML的用例图和时序图
  18. Linux Socket编程(不限Linux)基本函数用法
  19. pipeline设计模式
  20. Elasticsearch在各大互联网公司的应用案例

热门文章

  1. mxnet load生成的json模型告警src/nnvm/legacy_json_util.cc:204: Warning: loading symbol saved by MXNet versio
  2. php框架laravel下载,laravel 5.4
  3. VMVare中Ubuntu报错:Drag and drop is not supported
  4. 内存条是不是计算机主机配置,玩吃鸡电脑要什么配置 主要是CPU,显卡和内存条...
  5. openlayer地图裁切
  6. 短视频剪辑软件分享,短视频剪辑软件这几个很不错。​
  7. 一招连环追销,让顾客在第一次成交中买多个产品,客单价提高十倍
  8. Qt中的C++技术 张波
  9. 关于无损APE,FLAC转AAC的小技巧
  10. CAD制图软件中多线段显示不正确怎么办?