🍅 作者主页:Java李杨勇
🍅 简介:Java领域优质创作者🏆、Java李杨勇公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】
🍅 欢迎点赞 👍 收藏 ⭐留言 📝
前言:
前段时间也和大家分享了一个关于Springboot+vue的前后端分享的脚手架、最近刚好有同学找到我叫我帮他做一个简单的酒庄管理系统、于是就找到个这个开源框架来试试看、这是个什么项目呢,它就是是集SpringBoot、MyBatis、Shiro于一体的标准项目框架、让我们解放双手 ✋ 从现在开始看一下吧。不管是用来学习技术还是接私活/毕设/兼职挣钱、都是非常不错的哟、建议大家收藏起来、文末我把源码给大家。
这岂不是太简单了 分分钟就能做好的吗、哈哈、不说废话了、今天就给大家演示一下利用一个开源框架写一个吧
这个开源项目主要特点:
- 这个框架采用SpringBoot、MyBatis、Shiro框架,开发的一套权限系统,极低门槛,拿来即用。设计之初,也非常注重安全性,为自己做学习使用以及简单企业系统都是可以的,让我们的开发变得很简单。
- 灵活的权限控制,可控制到页面或按钮,满足绝大部分的权限需求、根据管理员灵活控制权限
- 完善的部门管理及数据权限,通过注解实现数据权限的控制、具体到前端后代码
- 完善的XSS防范及脚本过滤,彻底杜绝XSS攻击
- 支持MySQL、Oracle、SQL Server、PostgreSQL等主流数据库
- 后期推荐进行云服务器进行部署项目
内置功能模板:
用户管理:用户是系统操作者,该功能主要完成系统用户配置。
部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
岗位管理:配置系统用户所属担任职务。
菜单管理:配置系统菜单,操作权限,按钮权限标识等。
角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
字典管理:对系统中经常使用的一些较为固定的数据进行维护。
参数管理:对系统动态配置常用参数。
通知公告:系统通知公告信息发布维护。
操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
登录日志:系统登录日志记录查询包含登录异常。
在线用户:当前系统中活跃用户状态监控。
定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。
系统接口:根据业务代码自动生成相关的api接口文档。
服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。
缓存监控:对系统的缓存信息查询,命令统计等。
在线构建器:拖动表单元素生成相应的HTML代码。
连接池监视:监视当期系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。
项目介绍:
项目实际分为4个模块:
- renren-common为公共模块,其他模块以jar包的形式引入进去,主要提供些工具类,以及renren-admin、renren-api模块公共的entity、mapper、dao、service服务,防止一个功能重复多次编写代码。
- renren-admin为后台模块,也是系统的核心,用来开发后台管理系统,可以打包成jar,部署到服务器上运行,或者打包成war,放到Tomcat8.5+容器里运行。
- renren-api为接口模块,主要是简化APP开发,如:为微信小程序、IOS、Android提供接口,拥有一套单独的用户体系,没有与renren-admin用户表共用,因为renren-admin用户表里存放的是企业内部人员账号,具有后台管理员权限,可以登录后台管理系统,而renren-api用户表里存放的是我们的真实用户,不具备登录后台管理系统的权限。renren-api主要是实现了用户注册、登录、接口权限认证、获取登录用户等功能,为APP接口的安全调用,提供一套优雅的解决方案,从而简化APP接口开发。
- renren-generator为代码生成器模块,只需在MySQL数据库里,创建好表结构,就可以生成新增、修改、删除、查询、导出等操作的代码,包括entity、mapper、dao、service、controller、页面等所有代码,项目开发神器。
这边由于我个人没有用到api/微信小程序、IOS、Android提供接口的业务以及generator代码生成器模块 、所以可以根据实际情况删除和添加模块
本地部署项目:
下载地址:
git clone https://gitee.com/renrenio/renren-security.git
- 环境要求JDK1.8、Tomcat8.5+、MySQL5.5+
- 通过git,下载renren-security源码,如下:
- 创建数据库 renren_security ,数据库编码为 UTF-8
- 执行数据库脚本,如MySQL数据库,则执行 db/mysql.sql 文件,初始化数据
- 修改application-dev.yml,更改数据库账号和密码
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
druid:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/renren-chateau?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: root
password: 123456
initial-size: 10
max-active: 100
min-idle: 10
max-wait: 60000
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 20
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 300000
#Oracle需要打开注释
#validation-query: SELECT 1 FROM DUAL
test-while-idle: true
test-on-borrow: false
test-on-return: false
stat-view-servlet:
enabled: true
url-pattern: /druid/*
#login-username: admin
#login-password: admin
filter:
stat:
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: false
wall:
config:
multi-statement-allow: true
##多数据源的配置,需要引用renren-dynamic-datasource
#dynamic:
# datasource:
# slave1:
# driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
# url: jdbc:sqlserver://localhost:1433;DatabaseName=renren_security
# username: sa
# password: 123456
# slave2:
# driver-class-name: org.postgresql.Driver
# url: jdbc:postgresql://localhost:5432/renren_security
# username: renren
# password: 123456
设置拦截放行:
静态资源文件以及登录和swagger-ui接口文档等设置放行
@Bean("shiroFilter")
public ShiroFilterFactoryBean shiroFilter(SecurityManager securityManager) {
ShiroFilterFactoryBean shiroFilter = new ShiroFilterFactoryBean();
shiroFilter.setSecurityManager(securityManager);
shiroFilter.setLoginUrl("/login.html");
shiroFilter.setUnauthorizedUrl("/");
Map<String, String> filterMap = new LinkedHashMap<>();
filterMap.put("/swagger/**", "anon");
filterMap.put("/v2/api-docs", "anon");
filterMap.put("/swagger-ui.html", "anon");
filterMap.put("/webjars/**", "anon");
filterMap.put("/swagger-resources/**", "anon");
filterMap.put("/statics/**", "anon");
filterMap.put("/login.html", "anon");
filterMap.put("/sys/login", "anon");
filterMap.put("/favicon.ico", "anon");
filterMap.put("/captcha.jpg", "anon");
filterMap.put("/**", "authc");
shiroFilter.setFilterChainDefinitionMap(filterMap);
return shiroFilter;
}
项目启动:
- 运行io.renren.AdminApplication.java的main方法,则可启动renren-admin项目
- 项目访问路径:http://localhost:8080/renren-admin
- 账号密码:admin/admin
- Swagger路径:http://localhost:8080/renren-admin/swagger/index.html
- Swagger注解路径:http://localhost:8080/renren-admin/swagger-ui.html
这是稍微经过改造之后的样子
改造前:
改造后:
加一些业务表和删除隐藏掉一些不必要的功能模块
核心技术:
SpringBoot框架 Spring Boot
是一款开箱即用框架,提供各种默认配置来简化项目配置。让我们的Spring
应用变的更轻量化、更快的入门。 在主程序执行main
函数就可以运行。你也可以打包你的应用为jar
并通过使用java -jar
来运行你的Web应用。它遵循"约定优先于配置"的原则, 使用SpringBoot
只需很少的配置,大部分的时候直接使用默认的配置即可。同时可以与Spring Cloud
的微服务无缝结合。
Spring Boot2.x
版本环境要求必须是jdk8
或以上版本,服务器Tomcat8
或以上版本
优点
- 使编码变得简单: 推荐使用注解。
- 使配置变得简单: 自动配置、快速集成新技术能力 没有冗余代码生成和XML配置的要求
- 使部署变得简单: 内嵌Tomcat、Jetty、Undertow等web容器,无需以war包形式部署
- 使监控变得简单: 提供运行时的应用监控
- 使集成变得简单: 对主流开发框架的无配置集成。
- 使开发变得简单: 极大地提高了开发快速构建项目、部署效率。
Spring Security安全控制
1、介绍Spring Security
是一个能够为基于Spring
的企业应用系统提供声明式的安全访问控制解决方案的安全框架。
2、功能Authentication
认证,就是用户登录Authorization
授权,判断用户拥有什么权限,可以访问什么资源
安全防护,跨站脚本攻击,session
攻击等
非常容易结合Spring
进行使用
3、Spring Security
与Shiro
的区别
相同点
1、认证功能 2、授权功能 3、加密功能
4、会话管理 5、缓存支持 6、rememberMe功能
不同点
优点:
1、Spring Security基于Spring开发,项目如果使用Spring作为基础,配合Spring Security做权限更加方便。而Shiro需要和Spring进行整合开发
2、Spring Security功能比Shiro更加丰富,例如安全防护方面
3、Spring Security社区资源相对比Shiro更加丰富
缺点:
1)Shiro的配置和使用比较简单,Spring Security上手复杂些
2)Shiro依赖性低,不需要依赖任何框架和容器,可以独立运行。Spring Security依赖Spring容器
今天推荐这个SpringBoot开源项目还是比较不错的、项目是快速开发脚手架,代码质量各方面的也还不错、适合用来做自己学习技术或者或自己兼职私活接单都是可以的哟、喜欢的朋友点一个一健三联支持下哟
获取源码:
总体来说这个开源项目功能相对还是比较优秀的、适合大家学习参考使用
打卡更新java文章 49 / 100 天、大家可以点赞、收藏、关注、评论我啦 、
查看博主主页联系或下方微信公众号获取更多哟
精彩专栏推荐:
Java毕设项目精品实战案例《100套》
HTML5大作业实战案例《100套》
转载请注明:毕设/私活/兼职必备,一个挣钱的开源【SpringBoot+Spring Security+MyBatis Plus】脚手架 | 胖虎的工具箱-编程导航